WPF防止重復運行實例
阿新 • • 發佈:2017-06-14
env num event ons esb port str 12px lai
1、方法一
在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防止重復運行實例