C#_利用CancellationToken取消task


直接代码:

        static void Main(string[] args)
        {
            CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
            CancellationToken cancellationToken = cancellationTokenSource.Token;

            Console.WriteLine("To terminate the example, press 'c' to cancel and exit...");
            Console.WriteLine();

            Task[] taskArray = new Task[10];
            for (int i = 0; i < taskArray.Length; i++)
            {
                taskArray[i] = Task.Factory.StartNew(() => CheckItems(Convert.ToInt32(Task.CurrentId),cancellationToken), cancellationToken);
            }

            char ch = Console.ReadKey().KeyChar;
            if (ch == 'c' || ch == 'C')
            {
                Console.WriteLine();
                cancellationTokenSource.Cancel();
            }        

            Console.ReadLine();
        }
        private static void CheckItems(int i, CancellationToken token)
        {
            try
            {
                Console.WriteLine($"{i} is started");
                Thread.Sleep(5000);
                if (token.IsCancellationRequested)
                {
                    token.ThrowIfCancellationRequested();
                }
                Console.WriteLine($"{i} is finished");
            }
            catch (OperationCanceledException)
            {
                Console.WriteLine($"{nameof(OperationCanceledException)} thrown, {i} canceled");
            }          
        }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM