【发布时间】:2014-04-17 09:14:11
【问题描述】:
我不明白这种行为:
static Mutex Mut;
static void Main(string[] args)
{
try
{
Mut = System.Threading.Mutex.OpenExisting("testmut");
}
catch
{
Mut = new Mutex(true, "testmut");
}
Mut.WaitOne();
Thread.Sleep(4000);
Mut.ReleaseMutex();
}
同时启动此应用程序的两个实例将导致第二个应用程序在第一个进程终止后获得 Abandoned Mutex 异常。为什么?在第一个进程中终止之前,我确实明确释放了互斥锁。
【问题讨论】:
-
WaitOne 方法阻塞当前线程,直到 Mutex 被释放。因此,在 WaitOne() 之后,你不能再次释放它。
标签: c# mutex interprocess