SortedList.SyncRoot プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
SortedList オブジェクトへのアクセスを同期するために使用できるオブジェクトを取得します。
public:
virtual property System::Object ^ SyncRoot { System::Object ^ get(); };
public virtual object SyncRoot { get; }
member this.SyncRoot : obj
Public Overridable ReadOnly Property SyncRoot As Object
プロパティ値
SortedList オブジェクトへのアクセスを同期するために使用できるオブジェクト。
実装
例
次のコード例は、 プロパティを使用して列挙体全体をロック SyncRoot する方法を示しています。
SortedList^ myCollection = gcnew SortedList();
bool lockTaken = false;
try
{
Monitor::Enter(myCollection->SyncRoot, lockTaken);
for each (Object^ item in myCollection);
{
// Insert your code here.
}
}
finally
{
if (lockTaken)
{
Monitor::Exit(myCollection->SyncRoot);
}
}
SortedList myCollection = new SortedList();
lock (myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Dim myCollection As New SortedList()
SyncLock myCollection.SyncRoot
For Each item In myCollection
' Insert your code here.
Next item
End SyncLock
このプロパティの値を取得することは操作です O(1)
。
注釈
オブジェクトの同期バージョンを SortedList 作成するには、 メソッドを Synchronized 使用します。 ただし、派生クラスは、 プロパティを使用して独自の同期バージョンの をSortedListSyncRoot提供できます。 同期コードは、 ではなく の SortedListに対SyncRootして操作を実行するSortedList必要があります。 こうすることにより、他のオブジェクトから派生したコレクションを適切に操作することができます。 具体的には、オブジェクトを同時に変更している可能性がある他のスレッドとの適切な同期が SortedList 維持されます。
コレクションの列挙処理は、本質的にスレッドセーフな処理ではありません。 コレクションが同期されていても、他のスレッドがコレクションを変更する場合があり、このときは列挙子から例外がスローされます。 列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。
適用対象
こちらもご覧ください
.NET