尝试获取以前获得的互斥锁的例外情况

时间:2011-04-11 01:30:19

标签: c# mutex named

我有这些代码行:

// index is an integer
Mutex mutex = new Mutex(false, "MUTEX_PREFIX" + index.ToString());
mutex.WaitOne();
// Access to the shared object which should not be accessed by multiple threads.
mutex.ReleaseMutex();

其他线程使用相同的逻辑(名为mutex),因此我确保正确的锁用于正确的资源。

问题是如果另一个线程(或进程)获取了命名的mutex,则当前线程获取异常而不是在第二行被阻塞。

我需要的是等待发布已命名的mutex,然后继续使用我的代码。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

完成后你必须调用mutex.ReleaseMutex()。您还可以捕获所有异常,释放和重新抛出;

典型的模式是使用lock,它可以处理异常:

 lock (typeof(MyClass))
 {
     .. access to the share object
 }