diff --git a/KeyGo/Program.cs b/KeyGo/Program.cs
index d9687fc..44baf3a 100644
--- a/KeyGo/Program.cs
+++ b/KeyGo/Program.cs
@@ -1,4 +1,5 @@
using System;
+using System.Text;
using System.Windows.Forms;
namespace KeyGo
@@ -15,16 +16,63 @@ namespace KeyGo
if (p != null)
{
if (p.MainWindowHandle == IntPtr.Zero)
- MessageBox.Show("应用已启动,无需重复运行", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show("应用程序已启用或未关闭,请勿重复启动程序。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
else
AppControl.ShowWindow(p);
}
else
{
+ //设置应用程序处理异常方式:ThreadException处理
+ Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
+ //处理UI线程异常
+ Application.ThreadException += Application_ThreadException;
+ //处理非UI线程异常
+ AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormMain());
}
}
+
+ private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
+ {
+ string str = GetExceptionMsg(e.Exception, e.ToString());
+ //Logger.Info("应用程序线程异常", e.Exception);
+ MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+ {
+ string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
+ //Logger.Info("未捕获异常", e.ExceptionObject as Exception);
+ MessageBox.Show(str, "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+
+ ///
+ /// 生成自定义异常消息
+ ///
+ /// 异常对象
+ /// 备用异常消息:当ex为null时有效
+ /// 异常字符串文本
+ private static string GetExceptionMsg(Exception ex, string backStr)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.AppendLine("****************************异常文本****************************");
+ sb.AppendLine("【出现时间】:" + DateTime.Now.ToString());
+ if (ex != null)
+ {
+ sb.AppendLine("【异常类型】:" + ex.GetType().Name);
+ sb.AppendLine("【异常信息】:" + ex.Message);
+#if DEBUG
+ sb.AppendLine("【堆栈调用】:" + ex.StackTrace);
+#endif
+ }
+ else
+ {
+ sb.AppendLine("【未处理异常】:" + backStr);
+ }
+ sb.AppendLine("***************************************************************");
+ return sb.ToString();
+ }
}
}
\ No newline at end of file