ActivityCollection.ICollection.IsSynchronized プロパティ


ICollection<T> へのアクセスが同期されているか、つまりスレッド セーフかどうかを示す値を取得します。Gets a value that indicates whether access to the ICollection<T> is synchronized, that is thread-safe.

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


true へのアクセスが同期されている (スレッド セーフである) 場合は ICollection<T>。それ以外の場合は falsetrue if access to the ICollection<T> is synchronized, that is, thread-safe; otherwise, false.



SyncRoot は、ICollection<T> へのアクセスを同期するために使用できるオブジェクトを返します。SyncRoot returns an object, which can be used to synchronize access to the ICollection<T>.

System.Collections 名前空間内のほとんどのコレクション クラスは、Synchronized メソッドも実装しています。このメソッドは、基になるコレクションをラップする同期されたラッパーを提供します。Most collection classes in the System.Collections namespace also implement a Synchronized method, which provides a synchronized wrapper around the underlying collection.

コレクションの列挙は、本質的にスレッド セーフなプロシージャではありません。Enumerating through a collection is intrinsically not a thread-safe procedure. コレクションの同期がとられている場合でも、別のスレッドによってそのコレクションを変更できるため、変更の結果として列挙子は例外をスローします。Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. 列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.