Ich habe eine gemeinsame Variable, die innerhalb einer foreach aktualisiert wird, es ist ein Zähler, also möchte ich den nächsten Zähler innerhalb einer parallelen foreach zugewiesen bekommen.Wie erhält man den nächsten Wert, wenn eine gemeinsame Variable in einer parallelen foreach inkrementiert wird?
Ich habe so etwas wie das:
int myCommonCounter = 5;
Parallel.Foreach(myList, (iterator, state) =>
{
if(iterator.MyProperty == X)
{
iterator.Position = miCommonCounter;
miCommonCounter = miCommonCunter + 1;
}
});
Ich will Lücken in Immobilien iterator.Position vermeiden und Duplikate zu vermeiden.
Ich habe ein Beispiel gesehen, das die Summe der Teilergebnisse, for example in this documentation, tut, aber es ist nicht wirklich der gleiche Fall, den ich brauche.
Also ich würde gerne wissen, ob es irgendwelche weg zu aktualisieren einen Zähler, um Lücken und Duplikate zu vermeiden, wenn ich innerhalb der parallelen foreach aktualisiert.
Danke.
[ 'Interlocked.Increment'] (https://docs.microsoft.com/dotnet /api/system.threading.interlocked.increment) – PetSerAl