feat: 优化异常处理,新增日志记录
This commit is contained in:
57
Program.cs
57
Program.cs
@@ -5,24 +5,51 @@ static class Program
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
if (!SingleInstanceManager.TryAcquire(out var instance) || instance is null)
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
SingleInstanceManager.SignalExistingInstance();
|
||||
return;
|
||||
// 设置全局异常处理
|
||||
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
||||
Application.ThreadException += Application_ThreadException;
|
||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||
|
||||
if (!SingleInstanceManager.TryAcquire(out var instance) || instance is null)
|
||||
{
|
||||
SingleInstanceManager.SignalExistingInstance();
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
using (instance)
|
||||
{
|
||||
TaskbarIntegration.InitializeProcess();
|
||||
ApplicationConfiguration.Initialize();
|
||||
TaskbarIntegration.InitializeShortcuts();
|
||||
|
||||
var mainForm = new MainForm();
|
||||
instance.StartServer(mainForm.ActivateFromExternal);
|
||||
Application.Run(mainForm);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError("Fatal error in Main", ex);
|
||||
MessageBox.Show($"程序发生严重错误即将退出:\n{ex.Message}", "TimerApp Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
using (instance)
|
||||
private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
|
||||
{
|
||||
TaskbarIntegration.InitializeProcess();
|
||||
ApplicationConfiguration.Initialize();
|
||||
TaskbarIntegration.InitializeShortcuts();
|
||||
|
||||
var mainForm = new MainForm();
|
||||
instance.StartServer(mainForm.ActivateFromExternal);
|
||||
Application.Run(mainForm);
|
||||
Logger.LogError("Unhandled UI Exception", e.Exception);
|
||||
// 这里可以选择不退出,或者提示用户
|
||||
// MessageBox.Show("发生未知错误,程序将尝试继续运行。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
var ex = e.ExceptionObject as Exception;
|
||||
Logger.LogError("Unhandled Domain Exception" + (e.IsTerminating ? " (Terminating)" : ""), ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user