別のスレッド (メイン スレッド) から更新される可能性がある間に、(バックグラウンド) スレッドのリストから読み取る必要があります。そのため、元のオブジェクトにアクセスしないように一時的なリストを作成しようとしています。複数の場所で更新が発生する可能性があるため、SyncLock を読み取りロジックに配置すると便利です。それは本質的に間違っていますか?これを正しくロックするためのオプション、またはマルチスレッド状態でリストのアクセス可能なコピーを取得する他の方法は何ですか?
' In Main thread:
Public SomeList = New List(Of SomeClass)
' ..edit list
' In other thread:
Dim tempList As List(Of SomeClass)
SyncLock SomeList
tempList = SomeList.ToList
End SyncLock
SomeList.ToListスロー:
ArgumentException、Destination 配列の長さが十分ではありません。destIndex と長さ、および配列の下限を確認してください。