, , BackgroundWorker, , () , ( ).
, , - Form.FormClosed, , , . RunWorkerCompleted , , - .
, , , IsDisposed, , 100% , / , , . , .
, , :
public object CloseMonitor { get; private set; }
public bool HasBeenClosed { get; private set; }
private void Form1_FormClosed(object sender, FormClosedEventArgs e) {
lock (this.CloseMonitor) {
this.HasBeenClosed = true;
}
}
:
worker.RunWorkerCompleted += (sender, args) => {
lock (form.CloseMonitor) {
if (form.HasBeenClosed) {
// maybe special code for this case
}
else {
cleanup();
// and other code
}
}
};
Form.FormClosing , , , .
, , , ( , WinForms ), , , , , . , , . , .