Parallel.For - проходит не все значения? - C#
Формулировка задачи:
Объясните пожалуйста, в чем подвох?
Использую Parallel.For(0, Длинна.Массива, Функция);
Но каждый раз выводится информация, что функция отработала меньшее количество раз.
TestArray2 Должен содержать всегда такое же количество записей, как и TestArray1, но при объеме больше 100 000 почти всегда есть разница в 5 - 20 000 элементов
private List<int> TestArray1 = new List<int>(); private List<int> TestArray2 = new List<int>(); private void TestMethod1() { TestArray1.Clear(); TestArray2.Clear(); for (int x = 0; x <= 99999; x++) { TestArray1.Add(x); } Parallel.For(0, TestArray1.Count, TestMethod2); OnLineCountChange("Массив1 " + TestArray1.Count + " Массив2 " + TestArray2.Count); } private void TestMethod2(int x) { TestArray2.Add(x); } private void OnLineCountChange(string countLine) { if (LineCountChange != null) LineCountChange(countLine); } public event Action<string> LineCountChange;
Решение задачи: «Parallel.For - проходит не все значения?»
textual
Листинг программы
private object Lock = new object(); private void TestMethod2(int x) { lock (Lock) { TestArray2.Add(x); } }