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!");
}