次の方法で共有


ICollection.IsSynchronized プロパティ

定義

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

public:
 property bool IsSynchronized { bool get(); };
public bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public ReadOnly Property IsSynchronized As Boolean

プロパティ値

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

注釈

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

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

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

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

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

適用対象

こちらもご覧ください