Ich benutzte eine BackgroundWorker
, um einige Web site herunterzuladen, indem ich innerhalb einer Schleife WebClient.DownloadString
rufte. Ich wollte die Option für den Benutzer, um in der Mitte der Download-Sachen zu stornieren, so rief ich CancelAsync
immer wenn ich fand, dass CancellationPending
war in der Mitte der Schleife.Wie kann ich einen BackgroundWorker anhalten? Oder etwas Ähnliches
Aber jetzt habe ich festgestellt, dass die Funktion DownloadString
manchmal einfriert, so entschied ich mich stattdessen DownloadStringAsync
zu verwenden (all dies in dem anderen Thread mit BackgroundWorker
erstellt). Und da ich meinen ganzen Code nicht schreiben will, indem ich die Schleife und die Funktion nach dem Aufruf von DownloadStringAsync
verlassen muss, habe ich direkt nach dem Aufruf eine While-Schleife gemacht, die nur nach einer Variablen bool Stop
sucht, die ich entweder wahr mache, wenn DownloadStringCompleted
Event-Handler wird aufgerufen oder wenn der Benutzer die Operation abbrechen möchte.
Jetzt ist die seltsame Sache, dass es gut auf der Debug-Version funktioniert; aber auf der ersten Version friert das Programm in der while-Schleife ein, als ob es der Hauptthread wäre.
WaitHandle funktioniert einfach perfekt. Vielen Dank! – Juan
Pause/Fortsetzen Schleife im Hintergrund Arbeiter http://StackOverflow.com/Questions/8359058/Pause-resume-loop-in-background-Worker –