Monitor クラスとは? わかりやすく解説

Monitor クラス

オブジェクトへのアクセス同期する機構提供します

名前空間: System.Threading
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public NotInheritable Class
 Monitor
[ComVisibleAttribute(true)] 
public static class Monitor
[ComVisibleAttribute(true)] 
public ref class Monitor abstract sealed
/** @attribute ComVisibleAttribute(true) */ 
public final class Monitor
ComVisibleAttribute(true) 
public final class Monitor
解説解説
メモメモ

このクラス適用される HostProtectionAttribute 属性Resources プロパティの値は、Synchronization または ExternalThreading です。HostProtectionAttribute は、デスクトップ アプリケーション (一般的にはアイコンダブルクリックコマンド入力、またはブラウザURL入力して起動するアプリケーション) には影響しません。詳細については、HostProtectionAttribute クラストピックまたは「SQL Server プログラミングホスト保護属性」を参照してください

Monitor クラスは、オブジェクトロックシングル スレッド付与してオブジェクトへのアクセス制御しますオブジェクトロックすると、通常クリティカル セクション呼ばれるコード ブロックへのアクセス制限できます。あるスレッドオブジェクトロック所有している間、他のスレッドはそのロック取得できません。Monitor使用してロック所有者実行しているアプリケーション コードセクションに、他のスレッドアクセスできないようにすることもできます。ただし、これは、他のスレッドロックされ別のオブジェクト使用してコード実行してない場合限ります

Monitor には次の機能あります

同期するオブジェクトごとに次の情報保持されます。

同期するオブジェクトアクセスするスレッド実行できるアクションについて、次の表で説明します

アクション

説明

Enter, TryEnter

オブジェクトロック取得します。このアクションは、クリティカル セクション先頭マークします。他のスレッドは、ロックされ別のオブジェクト使用してクリティカル セクション命令実行している場合除きクリティカル セクションに入ることはできません。

Wait

オブジェクトロック解放して、他のスレッドオブジェクトロックしたオブジェクトアクセスできるようにします。呼び出し元のスレッドは、他のスレッドオブジェクトアクセスしている間待機します。パルス シグナル使用してオブジェクトの状態が変更されたことを待機中のスレッド通知します

Pulse (シグナル)、 PulseAll

1 つ上の待機中のスレッドシグナル送ります。このシグナルが、ロックされオブジェクトの状態が変更されたことを待機中のスレッド通知すると、ロック所有者ロック解放する準備をします。待機中のスレッドオブジェクト実行待ちキュー入り最終的にオブジェクトロック受け取ることができますロック取得したスレッドは、必要な状態に達しているかどうか確認するためにオブジェクト新しい状態をチェックできます

Exit

オブジェクトロック解放します。このアクションは、ロックされオブジェクトによってプロテクトされるクリティカル セクション末尾マークします。

Enter メソッドExit メソッド使用してクリティカル セクション先頭末尾マークします。クリティカル セクション連続する命令セットである場合は、Enter メソッド取得したロックにより、ロックされオブジェクト囲まれコード1 つシングル スレッドだけが実行できるようになります。この場合は、try ブロックにこれらの命令置いてExit 命令finally ブロックに置くことをお勧めます。この機能は、通常クラス静的メソッドまたはインスタンス メソッドへのアクセス同期するために使用されます。インスタンス メソッド同期されたスレッド アクセス必要な場合は、現在のインスタンスロックするオブジェクトとして使用してEnter メソッドと、対応する Exit メソッド呼び出します。1 つスレッドだけが現在のインスタンスロック保持できるため、このメソッド実行できるのは、一度1 つスレッドだけです。静的メソッドは、現在のインスタンスTypeロックされオブジェクトとして使用するのと同じ方法プロテクトされますEnter および Exit メソッドによって提供される機能は、C# lock ステートメント (Visual Basic の場合SyncLock) によって提供される機能似てます。唯一の相違点は、lock および SyncLockモニタ確実に解放するために、Exit メソッドtry...finally ブロック (Visual Basic の場合Try...Finally) 内にラップすることです。

クリティカル セクション範囲メソッド全体にわたる場合、前のロック機能は System.Runtime.CompilerServices.MethodImplAttribute をメソッド配置しMethodImplAttributeコンストラクタSynchronized 値を指定して実行できます。この属性使用する場合は、Enter ステートメントExit ステートメント不要です。この属性によって、現在のスレッドメソッドから制御が戻るまでロック保持しますロックがすぐに解放できる場合は、この属性ではなくMonitor クラスまたは C# lock ステートメント使用します

特定のオブジェクトロックおよび解放する Enter ステートメントExit ステートメントは、メンバ境界またはクラス境界、またはその両方超えることはできますが、この方法はお勧めできません。

同期対象オブジェクト選択する場合は、プライベート オブジェクトまたは内部オブジェクトだけをロックする必要があります外部オブジェクトロックすると、デッドロック発生します。これは関連のないコード別の目的のために同じオブジェクトロック選択するためです。

継承階層継承階層
System.Object
  System.Threading.Monitor
スレッド セーフスレッド セーフ

この型は、マルチスレッド操作に対して安全です。

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からMonitor クラスを検索した結果を表示しています。
Weblioに収録されているすべての辞書からMonitor クラスを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からMonitor クラスを検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Monitor クラス」の関連用語

Monitor クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Monitor クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS