J'ai récemment changé une boucle For Each pour une boucle Parallel.ForEach. Je suis préoccupé par un objet déclaré en dehors de la boucle, mais affecté lors de l'itération dans la boucle. Voici le code simplifié.Parallel.ForEach stockage local
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)
Existe-t-il une condition de concurrence potentielle avec l'objet de résultats? Est-ce que quelque chose serait différent si je déplaçais la déclaration des résultats dans la boucle for?