vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Wie mit Exceptions in Threads umgehen? 
Autor: GambaJo
Datum: 28.10.10 16:35

Hallo Miteinander.

Ich brauchte einnen HttpListener für einen Web Service. Das habe ich mit Hilfe eines Listings auch umgesetzt, so dass der HttpListener in einem eigenen Thread im Hintergrund gestartet wird.

Nun kann es aber vorkommen, dass irgendetwas innerhalb des neuen Threads eine Exception auslöst (in meinem Fall z.B. "Kein Zugriff" beim Starten des Listeners). Dass so eine Exception kommt, ist erst Mal zweitrangig. Vorrangig geht es mir darum, wie ich damit umgehen soll. Ich möchte nämlich, dass der User bei einer solchen Exception oer z.B. MessageBox informiert wird und die Anwendung nicht komplett abschmiert, sondern in einen stabilen Zustand geführt wird.
Die MessageBox soll auch nicht aus dem neuen Hintergrund-Thread aufgerufen werden, sondern, wie normalerweise üblich, nach „oben“ weiter gereicht werden und vom Hauptthread angezeigt werden.
Mein Problem ist nun: Wie bekomme ich die Exception nach „oben“ weiter gereicht?

So rufe ich den Thread auf:
threadPool.QueueUserWorkItem(New WaitCallback(AddressOf ListenOnThread))
Und die Methode, die dann läuft, sieht folgendermaßen aus (ist hinten raus abgekürzt):
Private Sub ListenOnThread(ByVal state As Object)
  Using lListener As HttpListener = New HttpListener()
    lListener.Prefixes.Add(Me.myClientUrl)
    try
      lListener.Start()
    Catch ex As Exception
     ‘Diese Exception möchte ich zum HauptThread leiten
      Debug.WriteLine(ex.Message) Exception ausgeben
     ‘MessageBox.Show(ex.Message)Throw new Exception(ex.Message) klappt leider nicht
      Return
    End Try
  End Using
End Sub
Wenn ich direkt in dem Thread die MessageBox oder Debug ausgeben lasse, dann geht das zwar, ist aber eigentlich nicht erwünscht, da sich diese Klasse eigentlich nicht um die Behandlung der Exceptions kümmern soll.
Wenn ich die Exception einfach per Throw weiter leiten möchte, dann bekomme ich eine unbehandelte Ausnahme und fliege komplett raus.
Wie muss ich also damit umgehen?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Wie mit Exceptions in Threads umgehen?1.795GambaJo28.10.10 16:35
Re: Wie mit Exceptions in Threads umgehen?1.227ModeratorFZelle28.10.10 20:08
Re: Wie mit Exceptions in Threads umgehen?1.222ModeratorDaveS29.10.10 21:02
Re: Wie mit Exceptions in Threads umgehen?1.347ModeratorDaveS02.11.10 10:29
Re: Wie mit Exceptions in Threads umgehen?1.147GambaJo05.11.10 14:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel