次の方法で共有


SearchResultCollection.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  

適用対象

こちらもご覧ください