• WPF整理-Mutex确保Application单例运行


    有时我们不希望我们的WPF应用程序可以同时运行有多个实例,当我们试图运行第二个实例的时候,已经运行的实例也应该弹出来。

    我们可以用Mutex来实现

    打开App.xaml.cs,在App类中添加如下内容

       public partial class App : Application
        {
            [DllImport("user32", CharSet = CharSet.Unicode)]
            static extern IntPtr FindWindow(string cls, string win);
            [DllImport("user32")]
            static extern IntPtr SetForegroundWindow(IntPtr hWnd);
            [DllImport("user32")]
            static extern bool IsIconic(IntPtr hWnd);
            [DllImport("user32")]
            static extern bool OpenIcon(IntPtr hWnd);
    
            protected override void OnStartup(StartupEventArgs e)
            {
                bool isNew;
                var mutex = new Mutex(true, "My Singleton Instance", out isNew);
                if (!isNew)
                {
                    ActivateOtherWindow();
                    Shutdown();
                }
            }
            private static void ActivateOtherWindow()
            {
                var other = FindWindow(null, "MainWindow");
                if (other != IntPtr.Zero)
                {
                    SetForegroundWindow(other);
                    if (IsIconic(other))
                        OpenIcon(other);
                }
            }
        }
  • 相关阅读:
    城市联动
    Js-右键事件
    JS-键盘移动事件
    Js-点名器
    前端学习——HTML
    前端学习——前端基础
    Redis数据库学习
    2020系统综合实践 期末大作业
    #Nginx+Tomcat+Redis session共享
    2020系统综合实践 第7次实践作业
  • 原文地址:https://www.cnblogs.com/happyyftk/p/3430670.html
Copyright © 2020-2023  润新知