崩溃时自动退出程序?

时间:2011-06-10 07:36:06

标签: c# windows-7 crash

有没有办法让程序停止并在程序崩溃时退出程序?我正在使用C#开发程序,它运行的机器是32位Windows 7 Professional机器。

因此,例如,当我的X.exe崩溃时,会出现一个带有2个选项的小弹出窗口: 1 - 在线寻找解决方案。 2 - 停止X.exe

我希望自动选择第二个选项并停止我的程序。我有另一个监视X.exe的程序,所以当X.exe停止时,它将启动一个新的X.exe实例。

2 个答案:

答案 0 :(得分:3)

您可以为未处理的异常添加全局异常处理程序。当程序在运行时没有处理异常时会调用此处理程序,这会导致程序崩溃:

在Wpf-Applications中,您可以添加如下处理程序:

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

答案 1 :(得分: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