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