确保一次最多运行一个进程
本文关键字:一个 进程 运行 一次 确保 | 更新日期: 2023-09-27 17:52:35
有几个应用程序,其中不止一个进程不能同时运行。例如,我们不能同时运行两个windows Media Player实例。即使我们多次点击exe,另一个进程将而不是启动!
我想知道在以下情况下如何做到这一点:
- 如果应用程序是用c++开发的。应用程序不必是基于GUI的应用程序。
- ,如果应用程序是使用。net技术开发的。同样,应用程序不需要是基于GUI的应用程序。
通常应用程序需要在启动时尝试获取一些独特的资源;如果失败,它应该退出。唯一资源的性质因环境而异——例如,它可以监听特定的TCP端口,或者锁定文件或共享内存段。当然,程序在退出时需要小心地释放资源。
它们都依赖于相同的技巧:创建一个众所周知的命名对象(通常是互斥对象)并锁定它。所有实例都试图在启动期间创建并锁定此对象,如果它已经存在并且无法锁定,则说明另一个实例已经在运行,因此关闭。
private static Mutex m_Mutex;
m_Mutex = new Mutex(true, "myApp");
if (m_Mutex.WaitOne(0, false))
Application.Run(new MainForm());