方案一: 定义一个中间变量,异常时赋值,下次再执行时根据中间变量的值判断是否终止当前线程
方案二: Task.Run有一个重载方法,利用第二个参数可以终止当前线程
CancellationTokenSource cts = new CancellationTokenSource(); for (int i = 0; i < 50; i++) { var value = i; Task.Run(() => { try { Console.WriteLine($"开始任务,id:{Thread.CurrentThread.ManagedThreadId}"); Thread.Sleep(1000); if (value % 5==0) { Console.WriteLine($"this is an exception value={value}"); cts.Cancel(); } Console.WriteLine($"结束任务,id:{Thread.CurrentThread.ManagedThreadId}"); } catch (Exception ex) { Console.WriteLine(ex.Message); } }, cts.Token); }