Exemplo n.º 1
0
        static void CancellationTokenExample()
        {
            var cancelTokenSource = new CancellationTokenSource();
            var token             = cancelTokenSource.Token;

            new Task(() =>
            {
                Thread.Sleep(100);
                cancelTokenSource.Cancel();
            }).Start();

            try
            {
                Parallel.ForEach(new List <int>()
                {
                    1, 2, 3, 4, 5, 6, 7, 8
                },
                                 new ParallelOptions {
                    CancellationToken = token
                },
                                 x => Console.WriteLine("{0}! = {1}", x, Factorial.ComputeWithSleep(x)));
            }
            catch (OperationCanceledException ex)
            {
                Console.WriteLine("Operation has been canceled.");
                Console.WriteLine(ex.Message);
            }
            finally
            {
                cancelTokenSource.Dispose();
            }
        }