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