Morgen zusammen,
gibt es eine Möglichkeit eine Exception (die in einem Background auftritt) an die "Hauptanwendung" zu thrown?
Dort habe ich folgenden Code:
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormAppl());
}
catch (Exception ex)
{
if (ex.GetType() == typeof(Classes.Config_UnknowName))
{
// IRGEDNWAS
}
}
Das sind ja 2 unterschiedliche Threads.
Geht sowas überhaupt?
Hoffe ihr könnt mir da helfen!
Gruß Simon
Als billige Lösung eine static Exception Eigenschaft und diese dann im BackgroundWorker setzen lassen.
Da ist es dann auch egal ob es 2 Threads sind.
Du musst dann nur die Exception nach dem Abschluss auswerten.
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
Du kannst z.B. über delegate die Exception zurückgeben, s. cross thread calls u.a. auch hier [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke) und hier Eleganteste Art aus Worker-Thread auf Controls zugreifen [generell Kontrollfluss zwischen Threads]
Grüße
**:::
in deinem Beispielcode befindest du dich immer noch im MainThread
(ich seh da erstmal keine Background Thread)
du solltest wenn möglich die Exception in FormApl abfangen
ansosnten ev. noch folgende Events abonnieren für Exceptions die dir durch die lappen gehen:
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Hallo,
falls es sich um die Klasse BackgroundWorker handeln sollte (die Frage ist in der Beziehung etwas, nun ja, lax), so kann man die Exception im RunWorkerCompleted Ereignis abfragen.
Sollte es sich nicht um den BackgroundWorker handeln, kann man sich dort aber abschauen, wie man's machen könnte.
Es handelt sich um die backgroundworker klasse.
Aber aus dem DoWork-Event bzw Complet Event bekomme ich die exception nicht "raus"?
Gruß Simon