#

C#: Wait Loop umwandeln in Task.Delay
 
Wait und DoEvents in C#
Wenn man in C# eine Wartezeit einbauen möchte, damit der Task eine bestimmte Zeit wartet bevor er weiter arbeitet
Dann muss man hierzu keinen Warte-Schleife einbauen.
Die Beste Weise hierfür ist in C# eine asynchronen Task.Delay(..) einzubauen.
Allerdings muss man hierzu die Methode mit async definieren.
 
Asynchrones Delay in C# (entspricht einem alten wait)

private async void btnTranslate_Click(object sender, RoutedEventArgs e)
{
..
//----< wait 1 second >----
await Task.Delay(1000);
//----</ wait 1 second >----
..
}
 

 
 
C# Code Beispiel eines asynchronen Delay Anweisung (entspricht wait)

private async void btnTranslate_Click(object sender, RoutedEventArgs e)
{
// -------------------< btnTranslate_Click() > -------------------
//*set and get Translation
doc= (mshtml.HTMLDocument)ctlBrowser.Document;
set_Translation();
//----< wait 1 second >----
await Task.Delay(1000);
//----</ wait 1 second >----
 
//----< wait doc.complete >----
DateTime dtStart = DateTime.Now;
while (doc.readyState != "complete")
{
if ((DateTime.Now- dtStart).Seconds > 5) break;
await Task.Delay(1);
}
//----</ wait doc.complete >----
 
get_Translation();
//-------------------</ btnTranslate_Click() >-------------------
}

 
C# Code für Wait Loop

private void btnTranslate_Click(object sender, RoutedEventArgs e)
{
// -------------------< btnTranslate_Click() > -------------------
//*set and get Translation
doc= (mshtml.HTMLDocument)ctlBrowser.Document;
set_Translation();
//----< wait 5 seconds >----
DateTime dtStart = DateTime.Now;
while (1==1)
{
TimeSpan dtDiff= DateTime.Now-dtStart;
if ( dtDiff.Seconds >5) break;
Task.Delay(1); //does not work
}
//----</ wait 5 seconds >----
 
//----< wait doc.complete >----
dtStart = DateTime.Now;
while (doc.readyState != "complete")
{
;
if ((DateTime.Now- dtStart).Seconds > 5) break;
Task.Delay(1);
}
//----</ wait doc.complete >----
 
get_Translation();
//-------------------</ btnTranslate_Click() >-------------------
}

 
 
 

 
 
 
Mobile

.

soap2day