日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第八节:Task的各类TaskTResult返回值以及通用线程的异常处理方案。

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第八节:Task的各类TaskTResult返回值以及通用线程的异常处理方案。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.?Task的各種返回值-Task<TResult>?

PS:?在前面章節,我們介紹了Task類開啟線程、線程等待、線程延續的方式,但我們并沒有關注這些方式的返回值,其實他們都是有返回值的Task<TResult>,然后可以通過Task的實例調用Result屬性來獲取這個返回值。

  下面我們分三類來介紹:

  ①:線程開啟類的返回值, 使用Task<TResult>接受,或者直接使用Task接受,通過 實例.Result 來獲取返回值。這里的線程開啟類有多種,eg: Task.Run()、 task.start()、 Task.Factory.StartNew() 等。

  ②:線程延續類的返回值. eg:ContinueWith。

  ③:線程條件延續類的返回值. eg:WhenAll和WhenAny。

?1. 線程開啟類的返回值

1 { 2 Task<string> 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 Task<int> 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 Task<int> task1 = Task.Run(() =>3 {4 Console.WriteLine("我是子線程1哦");5 return 1;6 });7 Task<int> task2 = Task.Run(() =>8 {9 Console.WriteLine("我是子線程2哦"); 10 return 2; 11 }); 12 13 var task = Task.WhenAny(new Task<int>[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 }

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的第八节:Task的各类TaskTResult返回值以及通用线程的异常处理方案。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产欧美a | 中文字幕亚洲第一 | 久久久77| 日日日噜噜噜 | 99久久精品免费 | 国产成人精品无码播放 | 九九久久国产精品 | 国产噜噜噜 | 国产精品丝袜黑色高跟鞋的设计特点 | 欧美一级艳片视频免费观看 | 亚洲av无码一区二区三区网址 | 大片视频免费观看视频 | 亚洲永久免费精品 | 久久久久麻豆v国产精华液好用吗 | 婷婷久久五月 | 99久久久| 黄色录像三级 | 漂亮少妇高潮午夜精品 | 耳光调教vk | 欧美黑人又粗又大高潮喷水 | 色婷婷av一区二区三区在线观看 | 在线观看 亚洲 | 催眠调教后宫乱淫校园 | 亚洲成人av在线播放 | 国产精品永久 | 五月天av网站 | 日韩一区二区三区精 | 无码人妻精品一区二区蜜桃网站 | 污污免费在线观看 | 日韩成人在线影院 | 国产欧美一区二区三区沐欲 | 3d动漫精品啪啪一区二区竹菊 | 大尺度av | xxxxhd欧美| 99久热在线精品996热是什么 | 一级片免费看视频 | 少妇搡bbbb搡bbbb | 国产传媒视频在线 | 无码国产精品一区二区免费16 | 国产精品久久毛片av大全日韩 | 日本a天堂| 在线观看的av网站 | 精品人妻一区二区三区日产乱码卜 | 正在播放国产精品 | 国产精品麻豆一区二区 | 国产精品久久久久aaaa | 免费一级做a爰片久久毛片潮 | 青青成人在线 | 欧美视频网址 | 亚洲开心网 | 亚洲精品偷拍视频 | 国产成人久久精品77777综合 | 天堂中文视频 | 狠狠躁18三区二区一区视频 | 嫩草www | 免费人成年激情视频在线观看 | 亚洲情涩 | 98超碰在线| 肥臀av| 中文字幕av网址 | 中文字幕视频二区 | 久久爱伊人| 中文字幕在线免费视频 | 六月婷婷久久 | 一区二区的视频 | 色亚洲欧美 | 久久国产精品网 | 欧美激情在线狂野欧美精品 | 国产精选自拍 | 国产亚洲欧洲 | 亚洲欧洲精品视频 | 久草免费在线观看 | 第五色婷婷 | 日韩在线一二 | 天天综合91 | 免费中文字幕在线观看 | 日本一本视频 | 亚洲欧美日韩动漫 | 大香依人 | 午夜丁香婷婷 | 人妻激情文学 | 91在线日本 | 巨胸喷奶水www久久久免费动漫 | 91中出| 国产香蕉在线观看 | 曰本三级日本三级日本三级 | 久久看片 | 九色亚洲| 啪视频在线观看 | 青草视屏 | 色婷婷小说 | 国产成人精品白浆久久69 | 高清一区二区三区 | 色综合天天综合网天天看片 | 国产精品成人va在线观看 | 小视频在线播放 | 欧美第五页 | 欧美精品黄色片 | 在线播放国产精品 |