WPF防止重复运行实例

时间:2022-01-05 03:45:37

在app.xaml.cs下添加如下代码:

/// <summary> /// App.xaml 的交互逻辑 /// </summary> public partial class App : Application { System.Threading.Mutex mutex; public App() { this.Startup += new StartupEventHandler(App_Startup); } void App_Startup(object sender, StartupEventArgs e) { bool ret; mutex = new System.Threading.Mutex(true, "ElectronicNeedleTherapySystem", out ret); if (!ret) { MessageBox.Show("已有一个程序实例运行"); Environment.Exit(0); } } }

  二、方法二

1.通过查找process的方法来控制应用程序启动。 PS:这个方法有bug:在多用户登录后,只有一个用户可以正常启动程序,也就是说,进程是跨用户的。 [java] view plain copy int processCount = Process.GetProcessesByName("windowWPF").Where(o => o.Id != Process.GetCurrentProcess().Id).Count(); if (processCount > 1) Environment.Exit(0); 2. 注意mutex不能被回收,否则就无法发挥作用了。 [java] view plain copy bool ret; using (System.Threading.Mutex mutex = new System.Threading.Mutex(true, "WpfMuerterrrterterttex", out ret)) { if (!ret) Environment.Exit(0); }

  

 /// <summary>  

    /// App.xaml 的交互逻辑  

    /// </summary>  

    public partial class App : Application  

    {  

        System.Threading.Mutex mutex;  

  

        public App()  

        {  

            this.Startup += new StartupEventHandler(App_Startup);  

        }  

  

        void App_Startup(object sender, StartupEventArgs e)  

        {  

            bool ret;  

            mutex = new System.Threading.Mutex(true"ElectronicNeedleTherapySystem", out ret);  

  

            if (!ret)  

            {  

                MessageBox.Show("已有一个程序实例运行");  

                Environment.Exit(0);  

            }  

  

        }  

    }  

WPF防止重复运行实例