15 Stimmen

Wie schließe ich eine C#-Anwendung, die mehrere Threads erstellt hat, richtig?

Ich schreibe eine GUI-Anwendung.

Die Anwendung öffnet während ihrer Laufzeit mehrere Threads. Einer der Threads verarbeitet Ereignisse, die von anderen Anwendungen kommen können, und wartet daher in einer while(true)-Schleife auf das Ereignis, das nie beendet wird.

Der Benutzer kann die Anwendung in jeder Minute schließen. Ich möchte alle Threads schließen, die von der Hauptanwendung geöffnet wurden.

Ich verwende Process.GetCurrentProcess().Kill(); um dieses Problem im Moment zu lösen.

Ist dies eine gute Lösung? Wenn nicht, warum und wie kann man mit diesem Problem umgehen, d.h. wie kann man alle Threads schließen, die von der Hauptanwendung geöffnet wurden?

0voto

Ohad Schneider Punkte 34748

Erwägen Sie die Verwendung des BackGroundWorker Klasse. Da der Threadpool (über BeginInvoke()) verwendet wird, erhalten Sie Hintergrund-Threads. Als Bonus erhalten Sie bequeme Fortschrittsberichte, Abbruch- und Abschluss-Callbacks (die bereits an den UI-Thread weitergeleitet wurden).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X