私はforeachの内部で更新される共通の変数を持っています、それはカウンターなので、次のカウンターを並列foreachの内部に割り当てたいと思います。共通変数が並列foreachでインクリメントされているときに次の値を取得する方法は?
int myCommonCounter = 5;
Parallel.Foreach(myList, (iterator, state) =>
{
if(iterator.MyProperty == X)
{
iterator.Position = miCommonCounter;
miCommonCounter = miCommonCunter + 1;
}
});
は、私は、プロパティiterator.Positionのギャップを避けるために、あまりにも重複を避けたい:
は、私はそのようなものを持っています。
部分的な結果の合計がfor example in this documentationである例を見てきましたが、実際に必要な場合と同じではありません。
並列foreachの内部を更新したときに、ギャップや重複を避けるためにカウンタを更新する必要があるかどうかを知りたいと思います。
ありがとうございました。
であればint型にキャストする必要があるので、カウンタが長いのタイプであることに注意してください[ 'Interlocked.Increment'](https://docs.microsoft.com/dotnet /api/system.threading.interlocked.increment) – PetSerAl