VB.NET のスレッド同期について質問があります。
プライベート クラス メンバーとしてリスト オブジェクトがあり、それを読み取り専用プロパティとして公開するとします (Get
ブロック内の同期に注意してください)。
Dim mySubmissionList As New List(Of Submission)
ReadOnly Property SubmissionList() As List(Of Submission)
Get
SyncLock mySubmissionList
Return mySubmissionList
End SyncLock
End Get
End Property
クラスの別のメソッドでは、リストは次の場所に追加されます。
Public Sub AddSubmission(ByRef submsn As Submission)
SyncLock mySubmissionList
mySubmissionList.Add(submsn)
End SyncLock
End Sub
ここで、このプロパティを別のクラスで次のように使用するとします。
' CurrentSubmissions is an object of the class discussed above
For Each submsn In CurrentSubmissions.SubmissionList
' use submsn here...
Next
私の質問は、For
ブロック全体で mySubmissionList が同期されるかどうかです。基本的に、他のクラスの反復が完了するまで、私はmySubmissionList
使用されたくありません。AddSubmission