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 という名前) が使用されるため、適切なリソースに対して適切なロックが使用されるようにします。

問題は、namedmutexが別のスレッド (またはプロセス) によって取得された場合、現在のスレッドが 2 行目でブロックされる代わりに例外を取得することです。

私が必要とするのは、名前mutexが解放されるのを待ってから、コードを続行することです。

どこが間違っていますか?

4

1 に答える 1

0

完了したら、mutex.ReleaseMutex() を呼び出す必要があります。また、すべての例外をキャッチして解放し、再スローします。

典型的なパターンは、例外に対処するロックを使用することです。

 lock (typeof(MyClass))
 {
     .. access to the share object
 }
于 2011-04-11T01:53:59.877 に答える