有人可以展示如何检查程序(例如my_prog_1.exe)的另一个实例是否正在运行,如果有的话,如果有现有的实例,则停止加载应用程序< em>使用不同的文件名 (例如my_prog_2.exe) 两个程序集都相同,但它们的文件名不同。
请看这个帖子:
c-sharp-how-to-check-if-another-instance-of-the-application-is-running
在这个线程中,答案检查文件名,但我需要另一个参数而不是文件名...
答案 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并附加公司网址,以便您始终锁定应用程序的唯一对象。