Mutex.ReleaseMutex メソッド

2013/12/12

Mutex をいったん解放します。

Namespace:  System.Threading
アセンブリ:  mscorlib (mscorlib.dll 内)

public void ReleaseMutex()

例外条件
ApplicationException

呼び出し元のスレッドはミューテックスを所有していません。

スレッドがミューテックスを所有していると、待機関数を繰り返し呼び出すときに、スレッドの実行をブロックせずに同じミューテックスを指定できます。呼び出し回数は、共通言語ランタイムで保持されます。ミューテックスの所有権を解放する場合、このスレッドは、ReleaseMutex を同じ回数呼び出す必要があります。

ミューテックスを所有しているスレッドが終了した場合は、ミューテックスが放棄されたと言います。ミューテックスはシグナル状態になり、待機していた次のスレッドが所有権を取得します。デスクトップ用の .NET では、どのスレッドにも所有されていないミューテックスの状態はシグナル状態になり、AbandonedMutexException はミューテックスを取得する次のスレッドでスローされます。この動作は、違うバージョンの Windows Phone では異なります。

Windows Phone 8 Windows Phone 8: Windows Phone 8 では、Exception が次のスレッドでスローされます。

Windows Phone OS 7.1 Windows Phone OS 7.1: Windows Phone OS 7.1 では、いずれの例外もスローされません。

注意注意:

放棄されたミューテックスは、多くの場合、コードに深刻なエラーが存在することを意味します。スレッドがミューテックスを解放せずに終了すると、ミューテックスによって保護されるデータ構造の状態に不整合が生じることがあります。ミューテックスの所有権を要求する次のスレッドが、データ構造の整合性を検証できる場合、この例外を処理して続行できます。

システム全体で有効なミューテックスの場合、放棄されたミューテックスは、アプリケーションが (たとえば Windows タスク マネージャーを使用して) 強制終了されたことを示す場合があります。

Windows Phone OS

サポート: 8.0, 7.1

表示:
© 2014 Microsoft