我对 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
我的问题是,mySubmissionList 会在整个For
区块中同步吗?基本上,在其他类完成迭代之前,我不想mySubmissionList
被使用。AddSubmission