Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确保一次最多运行一个进程_C#_.net_C++_Process - Fatal编程技术网

C# 确保一次最多运行一个进程

C# 确保一次最多运行一个进程,c#,.net,c++,process,C#,.net,C++,Process,有多个应用程序,其中多个进程不能同时运行。例如,我们不能运行Windows Media Player的两个实例。即使我们多次单击exe,另一个进程也不会启动 我想知道在以下情况下如何做到这一点: 如果应用程序是用C++开发的。应用程序不必是基于GUI的应用程序 如果应用程序是使用.NET技术开发的。同样,应用程序不必是基于GUI的应用程序 我对此一无所知,所以我甚至不知道如何恰当地提出这个问题。如果我遗漏了什么(任何种类的细节),请随时要求澄清,或者在你的回答中假设(如果可能的话) 通常,应

有多个应用程序,其中多个进程不能同时运行。例如,我们不能运行Windows Media Player的两个实例。即使我们多次单击exe,另一个进程也不会启动

我想知道在以下情况下如何做到这一点:

  • 如果应用程序是用C++开发的。应用程序不必是基于GUI的应用程序
  • 如果应用程序是使用.NET技术开发的。同样,应用程序不必是基于GUI的应用程序

我对此一无所知,所以我甚至不知道如何恰当地提出这个问题。如果我遗漏了什么(任何种类的细节),请随时要求澄清,或者在你的回答中假设(如果可能的话)

通常,应用程序需要在启动时尝试获取一些独特的资源;如果失败,它应该退出。唯一资源的性质因环境而异——例如,它可以侦听特定的TCP端口,或者锁定文件或共享内存段。当然,程序在退出时需要小心释放资源。

它们都依赖于相同的技巧:创建一个众所周知的命名对象(通常是a)并锁定它。所有实例都会尝试在启动期间创建并锁定此对象,如果该对象已存在且无法锁定,则另一个实例已在运行,因此您将关闭

搜索这是一个常见的问题。
private static Mutex m_Mutex;
m_Mutex = new Mutex(true, "myApp");

        if (m_Mutex.WaitOne(0, false))
            Application.Run(new MainForm());