zoukankan      html  css  js  c++  java
  • 任务的取消

       //当其中一个线程异常之后 之后的线程都取消
    多线程里面抛出的异常只会终结当前线程,不会影响其他线程
    try { List<Task> list2 = new List<Task>(); CancellationTokenSource cts = new CancellationTokenSource(); for (int i = 0; i < 50; i++) { string name = i + "线程"; list2.Add(Task.Run(() => { try { if (!cts.IsCancellationRequested) Console.WriteLine(name + "开始"); Thread.Sleep(new Random().Next(50, 100)); if (name == "11线程" || name == "12线程") { cts.Cancel(); throw new Exception(name + "异常"); } if (!cts.IsCancellationRequested) Console.WriteLine(name + "结束"); else Console.WriteLine(name + "被取消"); } catch (Exception ex) { Console.WriteLine(ex.Message); cts.Cancel(); } }, cts.Token)); // cts.Token的作用:在cts.Cancel() 之后会抛出异常,即将cts.Cancel()之后的任务取消 cts.Cancel() 时还没有启动的任务就不启动了 } Task.WaitAll(list2.ToArray());//1:捕捉到异常的线程 } catch (AggregateException ex)//2 通过try catch AggregateException 遍历 { foreach (var item in ex.InnerExceptions) { Console.WriteLine(item.Message); } } catch (Exception ex) { }
  • 相关阅读:
    Luogu 4841 城市规划
    Luogu 4721 【模板】分治 FFT
    Luogu 4091 [HEOI2016/TJOI2016]求和
    Luogu 3723 [AH2017/HNOI2017]礼物
    FFT笔记
    Luogu 4900 食堂
    Luogu 4155 [SCOI2015]国旗计划
    Luogu 4069 [SDOI2016]游戏
    Luogu 4254 [JSOI2008]Blue Mary开公司
    Luogu 4251 [SCOI2015]小凸玩矩阵
  • 原文地址:https://www.cnblogs.com/fanlin92/p/13605160.html
Copyright © 2011-2022 走看看