Dictionary<TKey,TValue>.ICollection.SyncRoot プロパティ

定義

ICollection へのアクセスを同期するために使用できるオブジェクトを取得します。

property System::Object ^ System::Collections::ICollection::SyncRoot { System::Object ^ get(); };
object System.Collections.ICollection.SyncRoot { get; }
member this.System.Collections.ICollection.SyncRoot : obj
 ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot

プロパティ値

ICollection へのアクセスの同期に使用できるオブジェクトです。

実装

注釈

System.Collections.Generic 名前空間のコレクションの既定の実装は同期されません。

コレクションの列挙処理は、本質的にスレッドセーフな処理ではありません。 列挙処理でスレッド セーフを確保するには、列挙処理が終わるまでコレクションをロックできます。 コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。

プロパティは SyncRoot 、 へのアクセスを同期するために使用できる オブジェクトを ICollection返します。 同期は、すべてのスレッドがコレクションにアクセスする前にオブジェクトをロックする場合にのみ有効です。 次の SyncRoot コードは、C#、C++、Visual Basic の プロパティの使用を示しています。

ICollection ic = ...;
lock (ic.SyncRoot) {
   // Access the collection.
}
Dim ic As ICollection = ...
SyncLock ic.SyncRoot
   ' Access the collection.
End SyncLock
ICollection^ ic = ...;
try {
   Monitor::Enter(ic->SyncRoot);
   // Access the collection.
}
finally {
   Monitor::Exit(ic->SyncRoot);
}

このプロパティの値を取得することは、O(1) 操作です。

適用対象

こちらもご覧ください