当前位置: 首页 > news >正文

烟台制作网站wp网站开发

烟台制作网站,wp网站开发,北京产品网站建设,域名查询注册商一. Task的各种返回值-TaskTResult PS#xff1a; 在前面章节#xff0c;我们介绍了Task类开启线程、线程等待、线程延续的方式#xff0c;但我们并没有关注这些方式的返回值#xff0c;其实他们都是有返回值的TaskTResult#xff0c;然后可以通过Task的…一. Task的各种返回值-TaskTResult  PS 在前面章节我们介绍了Task类开启线程、线程等待、线程延续的方式但我们并没有关注这些方式的返回值其实他们都是有返回值的TaskTResult然后可以通过Task的实例调用Result属性来获取这个返回值。   下面我们分三类来介绍   ①线程开启类的返回值, 使用TaskTResult接受或者直接使用Task接受通过 实例.Result 来获取返回值。这里的线程开启类有多种eg: Task.Run()、 task.start()、 Task.Factory.StartNew() 等。   ②线程延续类的返回值. egContinueWith。   ③线程条件延续类的返回值. egWhenAll和WhenAny。 1. 线程开启类的返回值 1 { 2 Taskstring task1 Task.Factory.StartNew(() 3 { 4 Console.WriteLine(我是子线程哦); 5 return ok; 6 }); 7 task1.Wait(); 8 Console.WriteLine(我是主线程我要读取子线程task1的返回值为{0}, task1.Result); 9 } 2.  线程延续类的返回值 1 {2 Taskint task1 Task.Run(() 3 {4 Console.WriteLine(我是子线程1哦);5 return 2;6 });7 8 var task2 task1.ContinueWith((t) 9 { 10 Console.WriteLine(我是子线程2哦); 11 12 //这里的t代表 task1 13 var num t.Result 2; 14 return num.ToString(); 15 }); 16 17 task2.Wait(); 18 Console.WriteLine(我是主线程我要读取子线程task1的返回值为{0}, task1.Result); 19 Console.WriteLine(我是主线程我要读取子线程task2的返回值为{0}, task2.Result); 20 } 3. 线程条件延续类 1 {2 Taskint task1 Task.Run(() 3 {4 Console.WriteLine(我是子线程1哦);5 return 1;6 });7 Taskint task2 Task.Run(() 8 {9 Console.WriteLine(我是子线程2哦); 10 return 2; 11 }); 12 13 var task Task.WhenAny(new Taskint[2] { task1, task2 }); 14 task.Wait(); 15 16 //下面的值可能是1也可能是2 17 Console.WriteLine(我是主线程我要读取子线程task的返回值为{0}, task.Result.Result); 18 } 二. 通用线程异常处理方案 1.  背景我们想达到一个目的当同时开启多个线程的时候其中一个线程报错不影响其他线程的执行并且能把错误记下来。 2.   解决方案多重try-catch整个外侧主线程一个try-catch然后线程执行业务再用一个try-catch包裹起来。 常规方式捕获异常 1 {2 try3 {4 for (int i 0; i 5; i)5 {6 string name string.Format(name{0}, i);7 var task Task.Run(() 8 {9 try 10 { 11 //模拟某个线程出错 12 if (name name2) 13 { 14 throw new Exception(string.Format(线程执行失败i{0}, name)); 15 } 16 else 17 { 18 Console.WriteLine(string.Format(线程执行执行成功i{0}, name)); 19 } 20 } 21 catch (Exception ex) 22 { 23 Console.WriteLine(ex.Message); 24 } 25 26 }); 27 taskList.Add(task); 28 } 29 Task.WaitAll(taskList.ToArray()); 30 } 31 catch (Exception ex) 32 { 33 Console.WriteLine(ex.Message); 34 35 } 36 } 运行结果我们发现所有的线程均执行完毕且name2执行失败并捕获。 补充一下通过 AggregateException 类来捕获异常。 1 {2 try3 {4 for (int i 0; i 5; i)5 {6 string name string.Format(name{0}, i);7 var task Task.Run(() 8 {9 throw new Exception(string.Format(线程执行失败i{0}, name)); 10 }); 11 taskList.Add(task); 12 } 13 Task.WaitAll(taskList.ToArray()); 14 } 15 catch (AggregateException aes) 16 { 17 foreach (var item in aes.InnerExceptions) 18 { 19 Console.WriteLine(item.Message); 20 } 21 } 22 }
http://www.pierceye.com/news/51202/

相关文章:

  • 百度网站v认证无锡互联网公司排名
  • 外贸型网站的特点建网站_网站内容怎么做
  • c asp做网站好的网站建设技术
  • 建设数字官方网站做一个像qq空间的网站
  • wordpress下载类主题系统主题网站推广公司认准乐云seo
  • 西安专业网站建设服务wordpress 标签鼠标滑过_弹出的title 代码美化
  • 北京通州做网站网站开发与建设课程设计
  • 外贸建设网站公司哪家好黄冈市建设局网站
  • 公司软件网站开发怎么入账网站建设 教学大纲
  • 营销型网站建设目的和意义网站开发的质量标准
  • 全球网站建设品牌qq群怎么推广起来最快
  • 中航华福工程建设有限公司网站素材网站 模板
  • 企业做网站维护价格电脑版浏览器在线使用
  • 网站换稳定服务器建立平台的步骤
  • 有哪些做文创产品的网站网站怎么做排行榜
  • 网站开发需要的软件移动端网页
  • 泉州市城乡和住房建设网站常州新北区有做淘宝网站策划的吗
  • 秦皇岛网站建设seo免费做视频的软件app
  • 做电影网站赚了几百万html网站怎么做视频教程
  • 外贸网站源码海原县住房和城乡建设局网站
  • 建团购网站重庆集团网站建设
  • 临沂兰山建设局网站网页制作软件s
  • 成交型网站建设价格查域名服务商
  • 网站制作网站建设案例凌风wordpress视频
  • wordpress网站聊天插件wordpress分页链接
  • access数据库做网站建设哪里看额度
  • 河南网站制作公司哪家好网页设计公司有哪些成都
  • 苏中建设集团网站江门鹤山
  • 三站合一的网站怎么做教程中山商城型网站建设
  • 网站建设方案书网络部署方案东莞网络营销外包公司