Hallo,
ich möchte in meinem Programm eine Exception welche in einem anderen Thread geschmissen wird, an den Hauptthread weiterleiten um ihn im Unhandled Exception Event anzuzeigen.
Leider funktioniert das nicht ganz und ich bekomme eine TargetInvokationException. Eine nicht behandelte Ausnahme des Typs "System.Reflection.TargetInvocationException" ist in mscorlib.dll aufgetreten.
Weiß jemand ein Workaround? Womit hängt das zusammen?
Obwohl ja bei Button1 und 2 eigentlich das gleiche passieren sollte ist das Ergebnis doch ganz anders.
Button1: Die MessageBox zeigt MyInnerException an.
Button2: Die MessageBox zeigt Testexception und MyInnerException an.
Hier ein Beispiel:
ich möchte in meinem Programm eine Exception welche in einem anderen Thread geschmissen wird, an den Hauptthread weiterleiten um ihn im Unhandled Exception Event anzuzeigen.
Leider funktioniert das nicht ganz und ich bekomme eine TargetInvokationException. Eine nicht behandelte Ausnahme des Typs "System.Reflection.TargetInvocationException" ist in mscorlib.dll aufgetreten.
Weiß jemand ein Workaround? Womit hängt das zusammen?
Obwohl ja bei Button1 und 2 eigentlich das gleiche passieren sollte ist das Ergebnis doch ganz anders.
Button1: Die MessageBox zeigt MyInnerException an.
Button2: Die MessageBox zeigt Testexception und MyInnerException an.
Hier ein Beispiel:
VB.NET-Quellcode
- Option Explicit On
- Option Strict On
- Public Class Form1
- Private WithEvents backwk As New System.ComponentModel.BackgroundWorker
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- backwk.RunWorkerAsync()
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- ThrowExceptionWithInner()
- End Sub
- Private Sub ThrowExceptionWithInner()
- Try
- Throw New Exception("MyInnerException")
- Catch ex As Exception
- Throw New Exception("Testexception", ex)
- End Try
- End Sub
- Private Sub backwk_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles backwk.DoWork
- ThrowExceptionWithInner()
- End Sub
- Private Sub backwk_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles backwk.RunWorkerCompleted
- If Not IsNothing(e.Error) Then
- Throw e.Error
- End If
- End Sub
- End Class
VB.NET-Quellcode
- Partial Friend Class MyApplication
- Private Sub MyApplication_UnhandledException(sender As Object, e As ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
- Dim ExcMsg As String = ""
- If Not IsNothing(e.Exception) Then
- ExcMsg += e.Exception.Message
- If Not IsNothing(e.Exception.InnerException) Then
- ExcMsg += vbNewLine
- ExcMsg += e.Exception.InnerException.Message
- End If
- End If
- MsgBox(ExcMsg)
- End Sub
- End Class
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „FredM“ ()