首页 > 代码库 > How to cancel parallel loops in .NET C# z

How to cancel parallel loops in .NET C# z

  • Cancellation token
  • Parallel options
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();

Task.Factory.StartNew(() =>
{
    Thread.Sleep(5000);
    cancellationTokenSource.Cancel();
    Console.WriteLine("Token cancelled");
});

ParallelOptions parallelLoopOptions =
    new ParallelOptions()
    {
        CancellationToken = cancellationTokenSource.Token
    };


try
{               
    Parallel.For(0, Int64.MaxValue, parallelLoopOptions, index =>
    {
        double result = Math.Pow(index, 3);
        Console.WriteLine("Index {0}, result {1}", index, result);
        Thread.Sleep(100);
    });
}
catch (OperationCanceledException)
{
    Console.WriteLine("Cancellation exception caught!");
}