博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
避免在同一机器上同时运行同一应用程序的多个实例
阅读量:4533 次
发布时间:2019-06-08

本文共 989 字,大约阅读时间需要 3 分钟。

  • 通常,使用有名互斥体(named mutex).但是该方案有以下的缺陷
    • 互斥体的名称有被其他应用程序使用的较小,潜在风险.此时,该方案不再有效,并且很难检测到bug.
    • 该方案无法实现允许一个应用程序产生N个实例这样的一般问题.
  • 使用Process类.
1         ///  2         /// check whether other instance of the application is running. 3         ///  4         /// 
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 }
TestIfAlreadyRunning
  • Process.GetProcesses()也可以传递机器名称.这样返回的就是远程机器上运行的所有进程.

转载于:https://www.cnblogs.com/robyn/p/3812515.html

你可能感兴趣的文章
《稻盛和夫经营学》读后感心得体会3180字范文
查看>>
智能合约开发
查看>>
Tomcat系统架构
查看>>
WiFi破解这个技术很普通!Python几行代码就可以做到!进来就学会
查看>>
Python3 错误和异常
查看>>
大数据笔记-1018
查看>>
37.LAMP介绍 MySQL安装
查看>>
C语言/C++对编程学习的重要性!
查看>>
iOS组件化——蘑菇街案例分析
查看>>
如何成为一个合格的程序员
查看>>
Redis原理说明
查看>>
父类引用指向子类对象详解
查看>>
View 事件分发源码分析
查看>>
如何从复杂单体应用快速迁移到微服务?
查看>>
iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码
查看>>
线程池很容易理解的
查看>>
彻底理解数据库事务
查看>>
Oracle学习日志-1(基本概念)
查看>>
移动开发之混合编程第一步:为JavaScript定义Class-based编程风格
查看>>
Spring之事务管理
查看>>