次の方法で共有


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  

適用対象

こちらもご覧ください