ICollection.IsSynchronized プロパティ
クラスによって実装された場合は、 ICollection へのアクセスが同期されている (スレッド セーフである) かどうかを示す値を取得します。
ReadOnly Property IsSynchronized As Boolean
[C#]
bool IsSynchronized {get;}
[C++]
__property bool get_IsSynchronized();
[JScript]
function get IsSynchronized() : Boolean;
プロパティ値
ICollection へのアクセスが同期されている (スレッド セーフである) 場合は true 。それ以外の場合は false 。
解説
SyncRoot は、 ICollection へのアクセスを同期するために使用できるオブジェクトを返します。
System.Collections 名前空間内のほとんどのコレクション クラスは、Synchronized メソッドも実装しています。このメソッドは、基になるコレクションをラップする同期されたラッパーを提供します。
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチする方法のいずれかを実行できます。
[Visual Basic, C#] 列挙処理中に SyncRoot を使用してコレクションをロックする方法を次のコード例に示します。
ICollection myCollection = new ICollection();
lock( myCollection.SyncRoot ) {
foreach ( Object item in myCollection ) {
// Insert your code here.
}
}
[Visual Basic]
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
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
ICollection インターフェイス | ICollection メンバ | System.Collections 名前空間 | SyncRoot