如何检查程序集的另一个实例是否正在运行(不同的文件名)

时间:2014-01-01 18:43:11

标签: c# .net windows

有人可以展示如何检查程序(例如my_prog_1.exe)的另一个实例是否正在运行,如果有的话,如果有现有的实例,则停止加载应用程序< em>使用不同的文件名 (例如my_prog_2.exe) 两个程序集都相同,但它们的文件名不同。

请看这个帖子:
c-sharp-how-to-check-if-another-instance-of-the-application-is-running
在这个线程中,答案检查文件名,但我需要另一个参数而不是文件名...

1 个答案:

答案 0 :(得分:2)

您可以使用Mutex之类的here来实现应用程序的单个实例。 为了完整起见,我在这里发布代码,以防链接变得陈旧。

static class Program {
    static Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}");
    [STAThread]
    static void Main() {
        if(mutex.WaitOne(TimeSpan.Zero, true)) {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
            mutex.ReleaseMutex();
        } else {
            MessageBox.Show("only one instance at a time");
        }
    }
}

另外请确保我在评论中提到的生成新GUID并附加公司网址,以便您始终锁定应用程序的唯一对象。