Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Exception aus BackgroundWork an Hauptanwendung
Grimmbizkit
myCSharp.de - Member



Dabei seit:
Beiträge: 311
Herkunft: Niederrhein

Themenstarter:

Exception aus BackgroundWork an Hauptanwendung

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1899
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
vbprogger
myCSharp.de - Experte

Avatar #avatar-1820.gif


Dabei seit:
Beiträge: 1723
Herkunft: NRW/DE

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von vbprogger am .
Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.
---------
Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
private Nachricht | Beiträge des Benutzers
Spyke
myCSharp.de - Member



Dabei seit:
Beiträge: 146

beantworten | zitieren | melden

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);
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Spyke am .
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Grimmbizkit
myCSharp.de - Member



Dabei seit:
Beiträge: 311
Herkunft: Niederrhein

Themenstarter:

beantworten | zitieren | melden

Es handelt sich um die backgroundworker klasse.

Aber aus dem DoWork-Event bzw Complet Event bekomme ich die exception nicht "raus"?

Gruß Simon
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

:rtfm:
private Nachricht | Beiträge des Benutzers