Elegante Schließung des Fensters mit einem Ereignishintergrund
Wenn das Fenster einen Hintergrundarbeiter der UI -Fenster -Fenster -Benutzeroberfläche initialisiert, kann es schwierig werden, das Fenster zu schließen, ohne auf abnormale oder tote Schlösser zu stoßen. Dieses Problem unterstreicht die Herausforderungen, denen sich beim Versuch, den Hintergrundarbeitnehmer im Abschluss des Fensters zu stoppen, gegenübersteht.
<:> Frage:
Verwenden von
, um den Hintergrundarbeiter in Handleclosenevent zu stornieren, kann bei der Aufruf vonbgWorker.CancelAsync()
In HandleclosingEvent, das auf den Hintergrundverarbeiter wartet, wird es tote Schlösser verursachen, da Invoke()
nicht zurückkehrt. ObjectDisposedException
Invoke()
Definieren Sie ein Logo, um die Schließanforderung des Benutzers zu verfolgen.
In der Abdeckung prüfen Sie, ob der Hintergrundbearbeiter beschäftigt ist.
closePending
, um zu verhindern, dass das Fenster schließt. OnFormClosing
Ereignisverarbeitungsprogramm des Hintergrundarbeiters prüfen, ob closePending
Setzen Sie das e.Cancel = true
-Logo auf False zurück. RunWorkerCompleted
Beispielcode: closePending
closePending
Mit dieser Methode kann das Fenster auch dann ohne abnormale oder tote Schlösser elegant sein. Das obige ist der detaillierte Inhalt vonWie schließe ich eine Form mit einem aktiven Hintergrundworker anmutig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!