Эх сурвалжийг харах

feat: 程序单实例限制 - 防止双开,重复启动时激活已有窗口

- Program.cs: 启动时检测单实例,已有实例运行时通知激活后退出
DESKTOP-74CLTRG\Leol 1 сар өмнө
parent
commit
ec6e6400be

+ 11 - 2
src/YZWater.Avalonia/Program.cs

@@ -9,8 +9,17 @@ class Program
     // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
     // yet and stuff might break.
     [STAThread]
-    public static void Main(string[] args) => BuildAvaloniaApp()
-        .StartWithClassicDesktopLifetime(args);
+    public static void Main(string[] args)
+    {
+        // 单实例检测:如果已有实例运行,通知它激活窗口后退出
+        if (!SingleInstanceHelper.TryAcquire())
+        {
+            SingleInstanceHelper.ActivateExistingInstance();
+            return;
+        }
+
+        BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
+    }
 
     // Avalonia configuration, don't remove; also used by visual designer.
     public static AppBuilder BuildAvaloniaApp()