In einer WPF-App habe ich eine geplante Datenbankzugriffsaufgabe, die regelmäßig von einem Timer ausgeführt wird, und diese Aufgabe wurde in einem BackgroundWorker-Thread ausgeführt.Wie behandelt man Ausnahmen von einem BackgroundWorker-Thread?
Wenn der Verbindungsversuch fehlgeschlagen ist, erhalte ich eine Ausnahme durch try_catch
Konstruktion und ich möchte eine Statusleiste Text in einem UI-Thread aktualisieren.
Gibt es einige Prebuild-Ereigniskonstruktion in einem BackgroundWorker
für die Implementierung dieser, so etwas wie DoWorkEventHandler
oder RunWorkerCompletedEventHandler
, die dafür verwendet werden können? Wenn nicht, wie geht es besser?
Edited (hinzugefügt):
Wenn ich die Ausnahme innerhalb RunWorkerCompletedEventHandler
, mit e.Error
Parameter zu handhaben wollen, ist es nicht funktioniert. Wenn ich Exception unbehandelt im Thread BackgroundWorker
belasse, bleibt die Anwendung hängen und der Debugger zeigt auf die Code-Kette, die innerhalb BackgroundWorker
Thread ausgeführt wird, mit der Aussage: Ausnahme wurde durch Benutzercode nicht behandelt.
Also, in diesem Fall stoppt Thread nicht nur, Signalisierung zu RunWorkerCompletedEventHandler
, dass es mit Fehler gestoppt wurde, aber die ganze Anwendung funktioniert nicht mehr.
Vielen Dank an alle für die Beantwortung! Unter Berücksichtigung einiger Antworten habe ich meine Frage mit weiteren Details aktualisiert. – rem