2011-04-11 34 views
0

我有几行代码:异常的试图收购之前获取的互斥

// 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

不要让我们猜测异常消息。 – 2011-04-11 01:39:37

回答

0

完成后,您必须调用mutex.ReleaseMutex()。你也会捕获所有的例外情况并发布和重新抛出;

的典型模式是使用锁,这有例外科佩斯:

lock (typeof(MyClass)) 
{ 
    .. access to the share object 
} 
相关问题