//订阅ThreadException事件,处理UI线程异常,处理方法为 Application_ThreadException,关于事件的相关知识就不在这叙述了
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
public
void
Application_ThreadException(
object
sender, System.Threading.ThreadExceptionEventArgs e)
{
string
str =
""
;
string
strDateInfo =
"出现应用程序未处理的异常:"
+ DateTime.Now.ToString() +
"/r/n"
;
Exception error = e.Exception
as
Exception;
if
(error !=
null
)
{
str =
string
.Format(strDateInfo +
"异常类型:{0}/r/n异常消息:{1}/r/n异常信息:{2}/r/n"
,
error.GetType().Name, error.Message, error.StackTrace);
}
else
{
str =
string
.Format(
"应用程序线程错误:{0}"
, e);
}
if
(!Directory.Exists(
"ErrLog"
))
{
Directory.CreateDirectory(
"ErrLog"
);
}
writeLog(str); //记录日志
MessageBox.Show(
"发生致命错误,请及时联系作者!"
,
"系统错误"
, MessageBoxButtons.OK, MessageBoxIcon.Error);
//如果需要特殊情况下关闭窗体 加下面事件
this.VisibleChanged += new EventHandler(Form_wsc_VisibleChanged);
}
private void Form_wsc_VisibleChanged(object sender, System.EventArgs e)
{
this.Close();
}