Ich habe einen Worker Thread, der für meine Anwendung unerlässlich ist.
Es ist mit new Thread(method).Start();
erstellt ich nicht beitreten, ich erwarte nur, dass läuft, solange mein Programm läuft.
Es kann jedoch vorkommen, dass in diesem Thread eine Ausnahme auftritt. und als Folge wird der Thread (neben einigen letzten Logging) heruntergefahren. Eine Wiederherstellung ist für diesen kritischen Fehler nicht möglich. Da der Thread für die App wichtig ist, muss er ebenfalls heruntergefahren werden.So überwachen Sie einen wichtigen Worker-Thread
Jetzt ist meine Frage: Wie kann ich den Zustand meines Threads überwachen?
Möchten Sie
- Poll die
IsAlive
Eigenschaft? - die gefangene Ausnahme erneut auslösen und mit
AppDomain.CurrentDomain.UnhandledException
arbeiten? - implementieren Sie eine
event
, die das Ende meines Hintergrundthread signalisieren wird? - Verwenden Sie eine
BackgroundWorker
, dieRunWorkerCompleted
implementiert? (Aber ist ein BackgroundWorker wirklich die richtige Wahl für lange laufende Threads?) - etwas completley anders?
EDIT:
Gerade jetzt, ich löste das Problem, indem Application.Exit()
Aufruf ->Absturz früh und häufig. Das ist eine Option, auch :)
Aber ich brauche einen Verweis auf eine Kontrolle - nur für diese purpuse:/ – tanascius
Eine Kontrolle ist eine bequeme Möglichkeit, Code im UI-Thread auszuführen. Nicht unbedingt der einzige Weg. Normalerweise müssen Sie irgendwann zurückschalten, ich bevorzuge es so schnell wie möglich. –