我有这些代码行:
// 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
,然后继续使用我的代码。
我哪里错了?
答案 0 :(得分:0)
完成后你必须调用mutex.ReleaseMutex()。您还可以捕获所有异常,释放和重新抛出;
典型的模式是使用lock,它可以处理异常:
lock (typeof(MyClass))
{
.. access to the share object
}