有几个应用程序,一次不能运行多个进程。例如,我们无法运行Window Media Player的两个实例。即使我们多次点击exe,另一个进程不开始!
我想知道在以下情况下如何做到这一点:
我完全不知道这一点,所以甚至不知道如何恰当地提出问题。如果我遗漏任何东西(任何细节),请随时要求澄清,或在你的答案中假设(如果可能的话)。
答案 0 :(得分:3)
通常,应用程序需要尝试在启动时获取一些独特的资源;如果它失败了,它应该退出。独特资源的性质因环境而异 - 例如,它可能正在侦听特定TCP端口,或锁定文件或共享内存段。当然,程序在退出时需要小心释放资源。
答案 1 :(得分:3)
他们都依赖于同样的技巧:创建一个众所周知的命名对象(通常是Mutex)并锁定它。所有实例都会在启动期间尝试创建并锁定此对象,如果它已经存在且无法锁定,则另一个实例已在运行,因此您将关闭。
答案 2 :(得分:0)
private static Mutex m_Mutex;
m_Mutex = new Mutex(true, "myApp");
if (m_Mutex.WaitOne(0, false))
Application.Run(new MainForm());