次の方法で共有


Dictionary<TKey,TValue>.ValueCollection.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へのアクセスを同期するために使用できるオブジェクト。 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) 操作です。

適用対象

こちらもご覧ください