我有以下代码
Dim x As Integer = 0
Dim evtReport(SomeMap.Keys.Count - 1) As ManualResetEvent
For Each DeviceIp As String In SomeMap.Keys
evtReport(x) = New ManualResetEvent(False)
Dim thdReport As New Thread(New ParameterizedThreadStart(Sub() Me.CollectReportsNew(DeviceDetailsMap(DeviceIp), evtReport(x))))
thdReport.Name = "Something"
thdReport.Start()
If (x < evtReport.Count - 1) Then
x = x + 1
End If
Next
现在我要做的是从ManualReset
方法中按索引设置CollectReportsNew
事件。
但是,在CollectReportsNew
方法中,我看到发送了相同的evtReport
元素。这是因为发送了x的最后一个索引而不是每个线程获得自己的元素。
我不明白为什么会这样。