次の方法で共有


ReadOnlyCollectionBase.System.Collections.ICollection.IsSynchronized プロパティ

メモ : この名前空間、クラス、およびメンバは、.NET Framework Version 1.1 だけでサポートされています。

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

Private ReadOnly Property IsSynchronized As Boolean Implements _   ICollection.IsSynchronized
[C#]
bool ICollection.IsSynchronized {get;}
[C++]
private: __property bool
   System::Collections::ICollection::get_IsSynchronized();
[JScript]
private function get ICollection.IsSynchronized() : Boolean;

プロパティ値

ReadOnlyCollectionBase へのアクセスが同期されている (スレッド セーフである) 場合は true 。それ以外の場合は false 。既定値は false です。

実装

ICollection.IsSynchronized

解説

ReadOnlyCollectionBase インスタンスは同期されません。派生クラスでは、 SyncRoot プロパティを使用して、 ReadOnlyCollectionBase を同期できます。

コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチする方法のいずれかを実行できます。

[Visual Basic, C#] 列挙処理中に SyncRoot を使用してコレクションをロックする方法を次のコード例に示します。

 
ReadOnlyCollectionBase myCollection = new ReadOnlyCollectionBase();
 lock( myCollection.SyncRoot ) {
 foreach ( Object item in myCollection ) {
 // Insert your code here.
 }
}
[Visual Basic] 
Dim myCollection As New ReadOnlyCollectionBase()
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 ファミリ

参照

ReadOnlyCollectionBase クラス | ReadOnlyCollectionBase メンバ | System.Collections 名前空間 | SyncRoot