次の方法で共有


SortedDictionary<TKey,TValue>.ICollection.SyncRoot プロパティ

定義

ICollection へのアクセスを同期するために使用できるオブジェクトを取得します。

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

プロパティ値

ICollection へのアクセスの同期に使用できるオブジェクトです。

実装

注釈

System.Collections.Generic 名前空間のコレクションの既定の実装は同期されません。

コレクションの列挙処理は、本質的にスレッドセーフな処理ではありません。 列挙処理でスレッド セーフを確保するには、列挙処理が終わるまでコレクションをロックできます。 コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。

プロパティは ICollection.SyncRoot 、 へのアクセスを同期するために使用できる オブジェクトを ICollection返します。 同期は、コレクションにアクセスする前にすべてのスレッドがオブジェクトをロックする場合にのみ有効です。 次のコードは、C#、C++、および Visual Basic の プロパティの SyncRoot 使用を示しています。

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) 操作です。

適用対象

こちらもご覧ください