我已阅读in this post以避免“程序停止工作”对话框,我需要从AppDomain中捕获未处理的异常。
public Form1()
{
///Code
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
///more code
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var excep = e.ExceptionObject;
//Writing the exception to log file with the stack flow
Logger.Logger.LogException("UNHANDLED EXCEPTION:"+Environment.NewLine +excep.ToString(), this);
//Terminate the logger (manual event waiting for file write to finish)
Logger.Logger.Terminate();
Environment.Exit(1);
}
但是当我被吸入异常时。我可以看到它写在日志上,但应用程序显示“程序停止工作”对话框。
可以由Logger.Terminate
线引起吗?
(再次 - terminate命令等待所有日志都写入日志文件)
答案 0 :(得分:0)
理想情况下,您希望避免“程序停止工作”对话框,因为您希望避免“程序停止工作”条件开始。如果没有,如果你只是想记录错误并让程序优雅地结束,那么程序必须实际上正常结束。
如果你用Environment.Exit(1)
退出程序,你几乎要告诉操作系统,“嘿,我小心翼翼!”,这与优雅的终止相反。尝试使用0代码退出,看看它是否有任何区别。