2011-06-10 95 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