В предыдущей статье мы проверили, как использовать методы Break и Stop из ParallelLoopStateдля завершения процесса параллельного цикла.

Теперь давайте посмотрим, как можно использовать объект CancellationTokenSource для завершения процесса параллельного цикла.

Когда мы вызываем метод Parallel.For или Parallel.ForEach, мы можем предоставить некоторые параметры, которые будут использоваться в их исполнение.

Эти параметры могут быть предоставлены через объект ParallelOptions. Одним из его свойств является CancellationToken, которое ожидает Tokenиз объекта CancellationTokenSource. .

После создания нового объекта ParallelOptions мы можем передать его в наш циклический процесс. Затем мы можем отправить сигнал об отмене нашего процесса с помощью метода CancellationTokenSource.Cancel.

В приведенном ниже коде представлен простой подход к отмене цикла Parallel.For с помощью объекта CancellationTokenSource:

Сначала мы создаем новый объект CancellationTokenSource и устанавливаем его в свойстве CancellationToken из объекта ParallelOptions.

Затем мы запускаем новый поток с помощью метода Task.Factory.StartNew, который отправит сигнал на наш токен отмены через 2 секунды.

Наконец, мы запускаем наш циклический процесс для выполнения некоторых операций, и через 2 секунды этот цикл отменяется, и возникает OperationCanceledExceptions, указывающий, что наш процесс был отменен.

Я надеюсь, что это может быть полезно для вас! УДАЧНОГО ПРОГРАММИРОВАНИЯ!!

Ссылка: