List<T>.ICollection.SyncRoot List<T>.ICollection.SyncRoot List<T>.ICollection.SyncRoot Property

定義

ICollection へのアクセスを同期するために使用できるオブジェクトを取得します。Gets an object that can be used to synchronize access to the ICollection.

property System::Object ^ System::Collections::ICollection::SyncRoot { System::Object ^ get(); };
object System.Collections.ICollection.SyncRoot { get; }
 ReadOnly Property SyncRoot As Object Implements ICollection.SyncRoot

プロパティ値

ICollection へのアクセスを同期するために使用できるオブジェクト。An object that can be used to synchronize access to the ICollection. List<T> の既定の実装では、このプロパティは常に現在のインスタンスを返します。In the default implementation of List<T>, this property always returns the current instance.

実装

注釈

System.Collections.Generic 名前空間のコレクションの既定の実装は同期されません。Default implementations of collections in the System.Collections.Generic namespace are not synchronized.

コレクションの列挙は、本質的にスレッド セーフなプロシージャではありません。Enumerating through a collection is intrinsically not a thread-safe procedure. 列挙処理でスレッド セーフを確保するには、列挙処理が終わるまでコレクションをロックできます。To guarantee thread safety during enumeration, you can lock the collection during the entire enumeration. コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。To allow the collection to be accessed by multiple threads for reading and writing, you must implement your own synchronization.

SyncRoot アクセスを同期するために使用できるオブジェクトを返します、ICollectionします。SyncRoot returns an object that can be used to synchronize access to the ICollection. 同期は、すべてのスレッドがコレクションにアクセスする前にこのオブジェクトをロックする場合のみ有効です。Synchronization is effective only if all threads lock this object before accessing the collection. 次のコードは、使用、 SyncRoot c#、C++、および Visual Basic のプロパティ。The following code shows the use of the SyncRoot property for C#, C++, and Visual Basic.

ICollection ic = ...;  
lock (ic.SyncRoot)   
{  
    // Access the collection.  
}  
Dim ic As ICollection = ...  
SyncLock ic.SyncRoot  
    ' Access the collection.  
End SyncLock  
ICollection^ ic = ...;  
try   
{  
    Monitor::Enter(ic->SyncRoot);  
    // Access the collection.  
}  
finally   
{  
    Monitor::Exit(ic->SyncRoot);  
}  

このプロパティ値を取得することは、O(1) 操作になります。Retrieving the value of this property is an O(1) operation.

適用対象

こちらもご覧ください