From 3354850216b7d96bc92e606bba78e8e8d01f146c Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Sat, 14 Mar 2026 16:04:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=BF=83=E8=B7=B3=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/App.xaml.cs | 46 +++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/Ink Canvas/App.xaml.cs b/Ink Canvas/App.xaml.cs index 402b0a64..058ed2f1 100644 --- a/Ink Canvas/App.xaml.cs +++ b/Ink Canvas/App.xaml.cs @@ -1252,27 +1252,41 @@ namespace Ink_Canvas return; } } - - if (isStartupComplete && (DateTime.Now - lastHeartbeat).TotalSeconds > 10) + + if (isStartupComplete) { - LogHelper.NewLog("检测到主线程无响应,自动重启。"); - SyncCrashActionFromSettings(); - if (CrashAction == CrashActionType.SilentRestart) + var now = DateTime.Now; + var sinceHeartbeat = now - lastHeartbeat; + var sinceStartupComplete = startupCompleteHeartbeat == DateTime.MinValue + ? TimeSpan.Zero + : now - startupCompleteHeartbeat; + + if (sinceStartupComplete.TotalSeconds < 30) { - StartupCount.Increment(); - if (StartupCount.GetCount() >= 5) + return; + } + + if (sinceHeartbeat.TotalSeconds > 10) + { + LogHelper.NewLog("检测到主线程无响应,自动重启。"); + SyncCrashActionFromSettings(); + if (CrashAction == CrashActionType.SilentRestart) { - MessageBox.Show(Strings.GetString("Msg_RestartLimit"), Strings.GetString("Msg_RestartLimitTitle"), MessageBoxButton.OK, MessageBoxImage.Error); - StartupCount.Reset(); + StartupCount.Increment(); + if (StartupCount.GetCount() >= 5) + { + MessageBox.Show(Strings.GetString("Msg_RestartLimit"), Strings.GetString("Msg_RestartLimitTitle"), MessageBoxButton.OK, MessageBoxImage.Error); + StartupCount.Reset(); + Environment.Exit(1); + } + try + { + string exePath = Process.GetCurrentProcess().MainModule.FileName; + Process.Start(exePath); + } + catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } Environment.Exit(1); } - try - { - string exePath = Process.GetCurrentProcess().MainModule.FileName; - Process.Start(exePath); - } - catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } - Environment.Exit(1); } } }, null, 0, 3000);