エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Mutex クラス

2013/12/12

同期プリミティブは、プロセス間の同期にも使用できます。

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

public sealed class Mutex : WaitHandle

Mutex 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドMutex()Mutex クラスの新しいインスタンスを既定のプロパティを使用して初期化します。
パブリック メソッドMutex(Boolean)呼び出し元のスレッドにミューテックスの初期所有権があるかどうかを示す Boolean 型の値を使用して、Mutex クラスの新しいインスタンスを初期化します。
パブリック メソッドMutex(Boolean, String)呼び出し元のスレッドにミューテックスの初期所有権があるかどうかを示す Boolean 型の値と、ミューテックスの名前を表す文字列を使用して、Mutex クラスの新しいインスタンスを初期化します。
パブリック メソッドMutex(Boolean, String, Boolean)セキュリティ クリティカル。 Boolean 型の値を使用して、Mutex クラスの新しいインスタンスを初期化します。この Boolean 型の値は、呼び出し元のスレッドにミューテックスの初期所有権があるかどうか、ミューテックスの名前を表す文字列、およびメソッドが返されるときにミューテックスの初期所有権が呼び出し元のスレッドに付与されたかどうかを示す Boolean 値を示します。
このページのトップへ

  名前説明
パブリック プロパティSafeWaitHandleネイティブ オペレーティング システム ハンドルを取得または設定します。 (WaitHandle から継承されます。)
このページのトップへ

  名前説明
パブリック メソッドClose派生クラスでオーバーライドされると、現在の WaitHandle で保持されているすべてのリソースを解放します。 (WaitHandle から継承されます。)
パブリック メソッドDispose()WaitHandle クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。 (WaitHandle から継承されます。)
プロテクト メソッドDispose(Boolean)派生クラスでオーバーライドされると、WaitHandle によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。 (WaitHandle から継承されます。)
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッド静的メンバーOpenExistingセキュリティ クリティカル。 指定された名前付きミューテックスが存在する場合は、そのミューテックスを開きます。
パブリック メソッドReleaseMutexMutex をいったん解放します。
パブリック メソッドToString現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
パブリック メソッド静的メンバーTryOpenExistingセキュリティ クリティカル。 指定された名前付きミューテックスが既に存在する場合はそのミューテックスを開き、操作が成功したかどうかを示す値を返します。
パブリック メソッドWaitOne()現在の WaitHandle が信号を受信するまで、現在のスレッドをブロックします。 (WaitHandle から継承されます。)
パブリック メソッドWaitOne(Int32)32 ビット符号付き整数を使用して時間間隔を指定し、現在の WaitHandle がシグナルを受信するまで、現在のスレッドをブロックします。 (WaitHandle から継承されます。)
パブリック メソッドWaitOne(TimeSpan)TimeSpan を使用して時間間隔を指定し、現在のインスタンスがシグナルを受信するまで、現在のスレッドをブロックします。 (WaitHandle から継承されます。)
このページのトップへ

2 つ以上のスレッドが同時に共有リソースにアクセスする必要がある場合は、システムには同期機構を使用して、一度に 1 つのスレッドがリソースを使用することを保証する必要があります。Mutex は、共有リソースへの排他アクセス権を 1 つのスレッドにだけ付与する同期プリミティブです。あるスレッドがミューテックスを取得すると、ミューテックスを取得しようとしている 2 つ目のスレッドは最初のスレッドがミューテックスを解放するまで中断されます。

Mutex クラスはスレッド ID を適用するため、ミューテックスを解放できるのはそのミューテックスを取得したスレッドだけです。

ミューテックスを所有しているスレッドが終了した場合は、ミューテックスが放棄されたと言います。ミューテックスはシグナル状態になり、待機していた次のスレッドが所有権を取得します。

注意注意:

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

システム全体で有効なミューテックスの場合、放棄されたミューテックスは、アプリケーションが強制終了されたことを示す場合があります。

ミューテックスには、次の 2 種類があります。名前のないローカル ミューテックスと、名前付きシステム ミューテックス。ローカル ミューテックスは、現在のプロセス内部にのみ存在します。これは、ミューテックスを表す Mutex オブジェクトへの参照を持つプロセス内のすべてのスレッドで使用できます。名前のない各 Mutex オブジェクトは個別のローカル ミューテックスを表します。

名前付きシステム ミューテックスはオペレーティング システム全体から参照でき、プロセスの動作を同期するために使用できます。名前付きシステム ミューテックスを表す Mutex オブジェクトを作成するには、名前を指定できるコンストラクターを使用します。オペレーティング システム オブジェクトを同時に作成することもできます。または、Mutex オブジェクトの作成前から存在する場合もあります。同じ名前付きシステム ミューテックスを表す複数の Mutex オブジェクトを作成できます。

バージョンについてのメモ

Windows Phone

 Mutex は、Windows Phone のみでサポートされます。

Windows Phone OS

サポート: 8.0, 7.1

この型は、スレッド セーフです。

表示:
© 2014 Microsoft