Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1234 of 1492 menu
◀ ▶

Метод For

Метод For статический. Верхняя граница не входит: при (0, 5) индексы 0–4. Общую сумму наращивают под lock или через Interlocked.Add. Коллекцию обходят ForEach.

Синтаксис

Parallel.For(fromInclusive, toExclusive, body);

Пример

Давайте сложить индексы с lock:

using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { int sum = 0; object gate = new object(); Parallel.For(0, 5, i => { lock (gate) { sum += i; } }); int res = sum; Console.WriteLine(res); } }

Результат выполнения кода:

10

Пример

Давайте накопить сумму через Interlocked.Add:

using System; using System.Threading; using System.Threading.Tasks; class Program { static void Main() { int sum = 0; Parallel.For(0, 5, i => { Interlocked.Add(ref sum, i); }); int res = sum; Console.WriteLine(res); } }

Результат выполнения кода:

10

Пример

Давайте поймать AggregateException из тела:

using System; using System.Threading.Tasks; class Program { static void Main() { try { Parallel.For(0, 5, i => { if (i == 3) { throw new InvalidOperationException(); } }); } catch (AggregateException) { Console.WriteLine("fail"); } } }

Результат выполнения кода:

"fail"

Смотрите также

  • ForEach,
    обход коллекции
  • Parallel,
    класс целиком
  • Invoke,
    параллельные делегаты
  • PLINQ,
    параллельный LINQ
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить