只允许允许一个程序实例
在很多应用程序开发过程中,需要只允许一个程序实例,即使是通过虚拟桌面方式连接过来的,也是只允许一个人运行。
结合自己的开发经验和探索,对代码进行封装,只需要在Main函数里面调用一下函数即可,允许多个实例会出现下面的对话框提示信息,提示不允许多实例运行,如下所示:
/// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] private static void Main() { GlobalMutex(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //******启动代码********** } private static Mutex mutex = null; private static void GlobalMutex() { // 是否第一次创建mutex bool newMutexCreated = false; string mutexName = "Global\\" + "WareHouseMis";//系统名称,Global为全局,表示即使通过通过虚拟桌面连接过来,也只是允许运行一次 try { mutex = new Mutex(false, mutexName, out newMutexCreated); } catch (Exception ex) { Console.Write(ex.Message); System.Threading.Thread.Sleep(1000); Environment.Exit(1); } // 第一次创建mutex if (newMutexCreated) { Console.WriteLine("程序已启动"); //todo:此处为要执行的任务 } else { MessageUtil.ShowTips("另一个窗口已在运行,不能重复运行。"); System.Threading.Thread.Sleep(1000); Environment.Exit(1);//退出程序 } }