首页 > 代码库 > 避免在同一机器上同时运行同一应用程序的多个实例
避免在同一机器上同时运行同一应用程序的多个实例
- 通常,使用有名互斥体(named mutex).但是该方案有以下的缺陷
- 互斥体的名称有被其他应用程序使用的较小,潜在风险.此时,该方案不再有效,并且很难检测到bug.
- 该方案无法实现允许一个应用程序产生N个实例这样的一般问题.
- 使用Process类.
1 /// <summary> 2 /// check whether other instance of the application is running. 3 /// </summary> 4 /// <returns></returns> 5 private bool TestIfAlreadyRunning() 6 { 7 Process currentProcess = Process.GetCurrentProcess(); 8 9 foreach (var process in Process.GetProcesses())10 {11 // avoid check this process itself.12 if(currentProcess.Id != process.Id)13 {14 //if other instance is running,the Process Name must identical.15 if (currentProcess.ProcessName == process.ProcessName)16 return true;17 }18 }19 20 return false;21 }
- Process.GetProcesses()也可以传递机器名称.这样返回的就是远程机器上运行的所有进程.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。