Dictionary<TKey,TValue>.ValueCollection.ICollection.SyncRoot プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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へのアクセスを同期するために使用できるオブジェクト。 Dictionary<TKey,TValue>.ValueCollectionの既定の実装では、このプロパティは常に現在のインスタンスを返します。
実装
注釈
System.Collections.Generic内のコレクションの既定の実装は同期されません。
コレクションを列挙することは、本質的にスレッド セーフなプロシージャではありません。 列挙中のスレッド セーフを保証するために、列挙体全体の間にコレクションをロックできます。 読み取りと書き込みのためにコレクションに複数のスレッドからアクセスできるようにするには、独自の同期を実装する必要があります。
SyncRoot はオブジェクトを返します。これは、 ICollectionへのアクセスを同期するために使用できます。 同期は、コレクションにアクセスする前にすべてのスレッドがこのオブジェクトをロックする場合にのみ有効です。 次のコードは、 SyncRoot プロパティの使用方法を示しています。
ICollection ic = ...;
lock (ic.SyncRoot) {
// Access the collection.
}
Dim ic As ICollection = ...
SyncLock ic.SyncRoot
' Access the collection.
End SyncLock
このプロパティの値の取得は O(1) 操作です。