Недавно я изменил a Для каждого цикла в цикл Parallel.ForEach. Я обеспокоен тем, что объект объявляется вне цикла, но назначается при повторении в цикле. Вот упрощенный код.Parallel.ForEach локальное хранилище
Dim results As ModelResults
Dim noResultsModel As New List(Of ModelResults)
Dim lock As New Object
Parallel.ForEach(_modelEngines,
Sub(model)
results = model.Execute
If results IsNot Nothing Then
SyncLock lock
noResultsModel.Add(results)
End SyncLock
End If
results = Nothing
End Sub)
Есть ли потенциальное состояние гонки с объектом результатов? Было бы все иначе, если бы я переместил объявление результатов в цикл for?