SchemaNameCollection.ICollection.IsSynchronized プロパティ


ICollection へのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。Gets a value indicating whether access to the ICollection is synchronized (thread safe).

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。それ以外の場合は falsetrue if access to the ICollection is synchronized (thread safe); otherwise, false.



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

名前空間のほとんどのコレクションクラスは、 System.Collections 同期されたメソッドも実装します。このメソッドは、基になるコレクションの同期ラッパーを提供します。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.

次の例は、列挙体全体でを使用してコレクションをロックする方法を示してい SyncRoot ます。The following example shows how to lock the collection using the SyncRoot during the entire enumeration:

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