Heim >Backend-Entwicklung >C++ >Wie schließe ich eine Form mit einem aktiven Hintergrundworker anmutig?

Wie schließe ich eine Form mit einem aktiven Hintergrundworker anmutig?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-31 17:01:10799Durchsuche

How to Gracefully Close a Form with an Active BackgroundWorker?

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 von
    verursachen.
  1. bgWorker.CancelAsync() In HandleclosingEvent, das auf den Hintergrundverarbeiter wartet, wird es tote Schlösser verursachen, da Invoke() nicht zurückkehrt. ObjectDisposedException
  2. Lösung: Invoke()
Vermeidung von toten Schlössern und abnormalen Sicherheitsmethoden besteht darin, das Formclosinus -Ereignis selbst abzusagen. Die folgenden Schritte übermitteln die Lösung:

Definieren Sie ein Logo, um die Schließanforderung des Benutzers zu verfolgen.

In der Abdeckung prüfen Sie, ob der Hintergrundbearbeiter beschäftigt ist.

    Wenn Sie beschäftigt sind, stellen Sie die
  1. auf true fest, stornieren Sie den Hintergrundarbeiter und setzen Sie das closePending, um zu verhindern, dass das Fenster schließt.
  2. im Programm OnFormClosing Ereignisverarbeitungsprogramm des Hintergrundarbeiters prüfen, ob
  3. . Wenn es wahr ist, schließen Sie das Fenster.
  4. closePending Setzen Sie das e.Cancel = true -Logo auf False zurück.
  5. RunWorkerCompleted Beispielcode: closePending
  6. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn