直接代码:
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"); } }