Hintergrundaufgaben abbrechen
Wenn meine C # -Anwendung geschlossen wird, bleibt sie manchmal in der Bereinigungsroutine hängen. Insbesondere wird ein Hintergrund-Worker nicht geschlossen. Dies ist im Grunde, wie ich versuche, es zu schließen:
private void App_FormClosing (Objektabsender, FormClosingEventArgs e) {backgroundWorker1.CancelAsync (); while (backgroundWorker1.IsBusy); // bleibt hier stecken }
Gibt es eine andere Möglichkeit, wie ich das machen soll? Ich verwende Microsoft Visual C # 2008 Express Edition. Vielen Dank.
ZUSÄTZLICHE INFORMATION:
Der Hintergrund-Worker wird anscheinend nicht beendet. Das habe ich:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (!backgroundWorker1.CancellationPending)
{
// Do something.
}
}
Ich habe auch den Bereinigungscode geändert:
private void App_FormClosing(object sender, FormClosingEventArgs e)
{
while (backgroundWorker1.IsBusy)
{
backgroundWorker1.CancelAsync();
System.Threading.Thread.Sleep(1000);
}
}
Gibt es noch etwas, was ich tun sollte?