Wie kann ich warten, bis BackgroundWorker
zu beenden, wenn ausgeführt, wenn der Benutzer die Anwendung schließen? Ich würde gerne auf diese BackgroundWorker
beenden beenden dann Anwendung beenden. Ich versuchte mit AutoResetEvent
, aber ein Anruf an WaitOne()
bei FormClosing Zeit scheint die gesamte Benutzeroberfläche zu blockieren und feuert kein RunWorkerCompleted-Ereignis, wo Set()
aufgerufen wird. Wie kann ich das erreichen?Warten auf BackgroundWorker, wenn ausgeführt, um FormClosing-Zeit
Ich bin auf der Suche nach einer Alternative/die richtige Art und Weise dafür:
bool done = false;
private void my_backgroundWorker_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
resetEvent.Set();
done = true;
}
private void myForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (notify_backgroundWorker.IsBusy)
{
while(!done)
{
Application.DoEvents();
Thread.Sleep(500);
}
//resetEvent.WaitOne();
}
}
Siehe [Wie man BackgroundWorker auf dem Closing-Ereignis des Formulars stoppt?] (Https://stackoverflow.com/q/1731384/719186) – LarsTech