System.Threading.Mutex の話

.Net4.5時点のお話です。

.Netの標準APIで、Mutexを扱うためのSystem.Threading.Mutexというクラスがあります。こいつはIDisposableなのですが、直感に反し、Disposeが呼ばれても確保したMutexを解放してくれません。どうやらDisposeメソッドは、基底クラスであるSystem.Threading.WaitHandleクラスからそのまま継承している模様。

ということで、System.Threading.Mutexを使う際は、usingステートメントだけで安心せず、確実にReleaseMutexを呼ぶようにしましょう。