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?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage