이 페이지가 유용했습니까?
이 콘텐츠에 대한 여러분의 의견은 중요합니다. 의견을 알려주십시오.
추가 의견
1500자 남음
내보내기(0) 인쇄
모두 확장

ThreadExceptionEventArgs 클래스

ThreadException 이벤트에 대한 데이터를 제공합니다.

네임스페이스: System.Threading
어셈블리: System(system.dll)

public class ThreadExceptionEventArgs : EventArgs
public class ThreadExceptionEventArgs extends EventArgs
public class ThreadExceptionEventArgs extends EventArgs

ThreadExceptionEventArgs는 처리되지 않는 예외가 발생하는 경우 스레드에서 만들어집니다. ThreadExceptionEventArgs에는 발생한 Exception이 포함되어 있습니다.

다음 예제에서 사용자는 폼의 button1을 클릭하여 ThreadException 이벤트를 발생시킬 수 있습니다. 이 예제에서는 클래스를 두 개 만듭니다. ErrorHandler 클래스는 이벤트를 발생시키는 폼 및 단추를 만듭니다. CustomExceptionHandler 클래스는 예외를 처리할 메서드를 제공합니다.

ErrorHandler 클래스의 Main에서 코드는 예외 처리 클래스의 새 인스턴스(CustomExceptionHandler의 인스턴스)를 만듭니다. 그런 다음 이 인스턴스가 이벤트에 추가되고 응용 프로그램이 실행됩니다.

이 예제에서는 CustomExceptionHandler 클래스의 OnThreadException 메서드에서 try...catch...finally 문을 사용하여 예외를 처리합니다. ShowThreadExceptionDialog 메서드는 표시할 메시지를 만들어 메시지 상자에 표시합니다.

// 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);
    }
 }
 

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

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에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

.NET Framework

2.0, 1.1, 1.0에서 지원

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft