ThreadExceptionEventArgs-Klasse
Stellt Daten für das ThreadException-Ereignis bereit.
Namespace: System.Threading
Assembly: System (in system.dll)
Syntax
'Declaration
Public Class ThreadExceptionEventArgs
Inherits EventArgs
'Usage
Dim instance As ThreadExceptionEventArgs
public class ThreadExceptionEventArgs : EventArgs
public ref class ThreadExceptionEventArgs : public EventArgs
public class ThreadExceptionEventArgs extends EventArgs
public class ThreadExceptionEventArgs extends EventArgs
Hinweise
ThreadExceptionEventArgs wird durch einen Thread erstellt, wenn eine nicht behandelte Ausnahme eintritt. ThreadExceptionEventArgs enthält die aufgetretene Exception.
Beispiel
Im folgenden Beispiel können Sie ein ThreadException-Ereignis auslösen, indem Sie in einem Formular auf button1
klicken. Im Beispiel werden zwei Klassen erstellt. Die ErrorHandler
-Klasse erstellt das Formular und die Schaltfläche, die das Ereignis auslöst. Die CustomExceptionHandler
-Klasse stellt die Methoden zur Verfügung, um die Ausnahme zu behandeln.
In der ErrorHandler
-Klasse wird in Main
eine neue Instanz der Klasse für die Ausnahmebehandlung, d. h. eine Instanz von CustomExceptionHandler
erstellt. Die Instanz wird dann dem Ereignis hinzugefügt, und die Anwendung wird ausgeführt.
In der OnThreadException
-Methode der CustomExceptionHandler
-Klasse wird im Beispiel eine try...catch...finally-Anweisung verwendet, um die Ausnahme zu verarbeiten. Die ShowThreadExceptionDialog
-Methode erstellt die anzuzeigende Meldung und stellt diese in einem Meldungsfeld dar.
' Creates a class to throw the error.
Public Class ErrorHandler
Inherits System.Windows.Forms.Form
' Inserts code to create a form with a button.
' Programs the button to throw the exception when clicked.
Private Sub button1_Click(sender As Object, e As System.EventArgs)
Throw New ArgumentException("The parameter was invalid")
End Sub
Public Shared Sub Main()
' Creates an instance of the methods that will handle the exception.
Dim eh As New CustomExceptionHandler()
' Adds the event handler to to the event.
AddHandler Application.ThreadException, AddressOf eh.OnThreadException
' Runs the application.
Application.Run(New ErrorHandler())
End Sub
End Class
' Creates a class to handle the exception event.
Friend Class CustomExceptionHandler
'Handles the exception event
Public Sub OnThreadException(sender As Object, t As ThreadExceptionEventArgs)
Dim result As DialogResult = DialogResult.Cancel
Try
result = Me.ShowThreadExceptionDialog(t.Exception)
Catch
Try
MessageBox.Show("Fatal Error", "Fatal Error", _
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop)
Finally
Application.Exit()
End Try
End Try
' Exits the program when the user clicks Abort.
If result = DialogResult.Abort Then
Application.Exit()
End If
End Sub
' Creates the error message and display it.
Private Function ShowThreadExceptionDialog(e As Exception) As DialogResult
Dim errorMsg As String = "An error occurred please contact the " & _
"adminstrator with the following information:" & _
Microsoft.VisualBasic.ControlChars.Cr & _
Microsoft.VisualBasic.ControlChars.Cr
errorMsg &= e.Message & Microsoft.VisualBasic.ControlChars.Cr & _
Microsoft.VisualBasic.ControlChars.Cr & "Stack Trace:" & _
Microsoft.VisualBasic.ControlChars.Cr & e.StackTrace
Return MessageBox.Show(errorMsg, "Application Error", _
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop)
End Function
End Class
// Creates a class to throw the error.
public class ErrorHandler : System.Windows.Forms.Form {
// Inserts code to create a form with a button.
// Programs the button to throw the exception when clicked.
private void button1_Click(object sender, System.EventArgs e) {
throw new ArgumentException("The parameter was invalid");
}
public static void Main(string[] args) {
// Creates an instance of the methods that will handle the exception.
CustomExceptionHandler eh = new CustomExceptionHandler();
// Adds the event handler to to the event.
Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException);
// Runs the application.
Application.Run(new ErrorHandler());
}
}
// Creates a class to handle the exception event.
internal class CustomExceptionHandler {
//Handles the exception event
public void OnThreadException(object sender, ThreadExceptionEventArgs t)
{
DialogResult result = DialogResult.Cancel;
try {
result = this.ShowThreadExceptionDialog(t.Exception);
}
catch {
try {
MessageBox.Show("Fatal Error", "Fatal Error",
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
finally {
Application.Exit();
}
}
// Exits the program when the user clicks Abort.
if (result == DialogResult.Abort)
Application.Exit();
}
// Creates the error message and display it.
private DialogResult ShowThreadExceptionDialog(Exception e) {
string errorMsg = "An error occurred please contact the adminstrator " +
"with the following information:\n\n";
errorMsg = errorMsg + e.Message + "\n\nStack Trace:\n" + e.StackTrace;
return MessageBox.Show(errorMsg, "Application Error",
MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
}
// Creates a class to handle the exception event.
private ref class CustomExceptionHandler
{
public:
//Handles the exception event
void OnThreadException( Object^ /*sender*/, ThreadExceptionEventArgs^ t )
{
DialogResult result = DialogResult::Cancel;
try
{
result = this->ShowThreadExceptionDialog( t->Exception );
}
catch ( Exception^ )
{
try
{
MessageBox::Show( "Fatal Error", "Fatal Error", MessageBoxButtons::AbortRetryIgnore, MessageBoxIcon::Stop );
}
finally
{
Application::Exit();
}
}
// Exits the program when the user clicks Abort.
if ( result == DialogResult::Abort )
Application::Exit();
}
private:
// Creates the error message and display it.
DialogResult ShowThreadExceptionDialog( Exception^ e )
{
String^ errorMsg = "An error occurred please contact the adminstrator with the following information:\n\n";
errorMsg = String::Concat( errorMsg, e->Message, "\n\nStack Trace:\n", e->StackTrace );
return MessageBox::Show( errorMsg, "Application Error", MessageBoxButtons::AbortRetryIgnore, MessageBoxIcon::Stop );
}
};
// Creates a class to throw the error.
public ref class ErrorHandler: public System::Windows::Forms::Form
{
private:
// Inserts code to create a form with a button.
// Programs the button to throw the exception when clicked.
void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
throw gcnew ArgumentException( "The parameter was invalid" );
}
};
int main()
{
// Creates an instance of the methods that will handle the exception.
CustomExceptionHandler^ eh = gcnew CustomExceptionHandler;
// Adds the event handler to to the event.
Application::ThreadException += gcnew ThreadExceptionEventHandler( eh, &CustomExceptionHandler::OnThreadException );
// Runs the application.
Application::Run( gcnew ErrorHandler );
}
Vererbungshierarchie
System.Object
System.EventArgs
System.Threading.ThreadExceptionEventArgs
Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
ThreadExceptionEventArgs-Member
System.Threading-Namespace
Thread-Klasse
ThreadStart
ThreadExceptionEventHandler