同期されている (スレッド セーフな) IList ラッパーを返します。
Overloads Public Shared Function Synchronized( _
ByVal list As IList _) As IList
[C#]
public static IList Synchronized(IListlist);
[C++]
public: static IList* Synchronized(IList* list);
[JScript]
public static function Synchronized(
list : IList) : IList;
パラメータ
- list
同期する IList 。
戻り値
同期されている (スレッド セーフな) IList ラッパー。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | list が null 参照 (Visual Basic では Nothing) です。 |
解説
ArrayList を確実にスレッド セーフにするためには、すべての操作をこのラッパー経由で実行する必要があります。
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチする方法のいずれかを実行できます。
[Visual Basic, C#] 列挙処理中に SyncRoot を使用してコレクションをロックする方法を次のコード例に示します。
ArrayList myCollection = new ArrayList();
lock( myCollection.SyncRoot ) {
foreach ( Object item in myCollection ) {
// Insert your code here.
}
}
[Visual Basic]
Dim myCollection As New ArrayList()
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 ファミリ
参照
ArrayList クラス | ArrayList メンバ | System.Collections 名前空間 | ArrayList.Synchronized オーバーロードの一覧 | SyncRoot | IsSynchronized