2011-06-10 99 views
0

有什麼辦法讓程序停止並在程序崩潰時退出程序?我正在使用C#開發程序,它運行的機器是32位Windows 7 Professional機器。崩潰時自動退出程序?

因此,例如,當我X.exe崩潰,有2個選項一個小的彈出窗口上來: 1 - 尋找解決方案在線。 2 - 停止X.exe

我希望自動選擇第二個選項並停止我的程序。我有另一個監視X.exe的程序,所以當X.exe停止時,它會啓動一個新的X.exe實例。

回答

3

您可以爲未處理的異常添加全局異常處理程序。該處理器總是被調用時,你的程序沒有處理運行時的異常,這將導致PROGRAMM崩潰:

在WPF的應用程序,你可以添加處理程序是這樣的:

App.Current.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(Current_DispatcherUnhandledException); 

同爲的WinForms :

System.Windows.Forms.Application.ThreadException += new ThreadExceptionEventHandler(OnThreadException); 

而對於控制檯應用程序:

System.AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException); 
2

ŧ他的代碼應該引導你的方式:

public static void Main(string[] args) 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 

    // catch app errors 
    Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 
    try 
    { 
     Application.Run(new Form()); 
    } 
    catch (Exception exc) 
    { 
     // show popupform 
     PopupForm popup = new PopupForm(); 
     if(popup.ShowDialog() == DialogResult.OK) 
     { 
      Application.Restart(); 
     } 
     else 
     { 
      Application.Exit(); 
     } 
    } 
} 

static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) 
{ 
    // show popupform 
    PopupForm popup = new PopupForm(); 
    if(popup.ShowDialog() == DialogResult.OK) 
    { 
     Application.Restart(); 
    } 
    else 
    { 
     Application.Exit(); 
    } 
} 

了Lg warappa