PropertyCollection.ICollection.IsSynchronized プロパティ

定義

ICollectionへのアクセスが同期されているかどうかを示す値を取得します (スレッド セーフ)。

property bool System::Collections::ICollection::IsSynchronized { bool get(); };
bool System.Collections.ICollection.IsSynchronized { get; }
member this.System.Collections.ICollection.IsSynchronized : bool
 ReadOnly Property IsSynchronized As Boolean Implements ICollection.IsSynchronized

プロパティ値

true ICollectionへのアクセスが同期されている場合は (スレッド セーフ)、それ以外の場合はfalse

実装

注釈

SyncRoot はオブジェクトを返します。これは、 ICollectionへのアクセスを同期するために使用できます。

System.Collections名前空間のほとんどのコレクション クラスは、基になるコレクションの同期ラッパーを提供する Synchronized メソッドも実装します。

コレクションを通じて列挙することは、本質的にスレッド セーフなプロシージャではありません。 コレクションが同期されている場合でも、他のスレッドはコレクションを変更できるため、列挙子は例外をスローします。 列挙中のスレッド セーフを保証するには、列挙全体の間にコレクションをロックするか、他のスレッドによって行われた変更によって発生する例外をキャッチします。

次の例は、列挙体全体で SyncRoot を使用してコレクションをロックする方法を示しています。

ICollection myCollection = new ICollection();
  lock(myCollection.SyncRoot) {
  foreach (Object item in myCollection) {
  // Insert your code here.
  }
 }
Dim myCollection As New ICollection()
 Dim item As Object
 SyncLock myCollection.SyncRoot
  For Each item In myCollection
  ' Insert your code here.
  Next item
 End SyncLock

適用対象

こちらもご覧ください