【发布时间】:2011-06-24 17:00:52
【问题描述】:
我对 C# 编程比较陌生,几天前,我遇到了 mutex 一词。它的使用是为了避免运行同一应用程序的多个实例。我实际上是在看一本关于 WPF 的书(当然是使用 C#),所以没有对 C# 进行深入的解释(作者是为有足够 C# 知识的人写的)。
它以这种形式使用:
Mutex mutex;
// ...
// Check for existing instance
string mutexName = "MyCompanyName.MyAppName";
bool createdNew;
mutex = new Mutex(true, mutexName, out createdNew);
// If there is an existing instance, shut down this one
if(!createdNew) { Shutdown(); }
我对互斥体的解释是它是一种系统范围的类型。所有单实例应用程序都访问系统中的所有互斥锁以防止出现多个实例。还。互斥体应该有一个唯一的name。 (当然,我会得到纠正;这是我自己的解释,所以可能是错误的)。
假设恰好有一个名为 "mutexConflict" 的互斥锁由应用程序 A 创建,而另一个应用程序 B(由完全不同的作者创建)有自己的互斥锁,也名为 "mutexConflict"。如果 A 已经在运行并且 B 即将运行,难道不应该有冲突吗? B会跑吗?
【问题讨论】: