有没有办法让程序停止并在程序崩溃时退出程序?我正在使用C#开发程序,它运行的机器是32位Windows 7 Professional机器。
因此,例如,当我的X.exe崩溃时,会出现一个带有2个选项的小弹出窗口: 1 - 在线寻找解决方案。 2 - 停止X.exe
我希望自动选择第二个选项并停止我的程序。我有另一个监视X.exe的程序,所以当X.exe停止时,它将启动一个新的X.exe实例。
答案 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