第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

運(yùn)行多個(gè)異步任務(wù)并等待它們?nèi)客瓿?/h1>

運(yùn)行多個(gè)異步任務(wù)并等待它們?nèi)客瓿晌倚枰诳刂婆_(tái)應(yīng)用程序中運(yùn)行多個(gè)異步任務(wù),并在進(jìn)一步處理之前等待它們?nèi)客瓿?。那里有很多文章,但我讀的越多越好。我已經(jīng)閱讀并理解了Task庫的基本原理,但我顯然錯(cuò)過了某處的鏈接。我知道可以將任務(wù)鏈接起來,以便它們?cè)诹硪粋€(gè)完成之后開始(這幾乎是我讀過的所有文章的場(chǎng)景),但我希望我的所有任務(wù)同時(shí)運(yùn)行,我想知道一次他們都完成了。對(duì)于這樣的場(chǎng)景,最簡單的實(shí)現(xiàn)是什么?
查看完整描述

3 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

這兩個(gè)答案都沒有提到等待的Task.WhenAll

var task1 = DoWorkAsync();var task2 = DoMoreWorkAsync();await Task.WhenAll(task1, task2);

Task.WaitAll和之間的主要區(qū)別在于Task.WhenAll前者將阻塞(類似于Wait在單個(gè)任務(wù)上使用),而后者將不會(huì)并且可以等待,從而將控制權(quán)交還給調(diào)用者,直到所有任務(wù)完成。

更重要的是,異常處理不同:

Task.WaitAll

至少有一個(gè)Task實(shí)例被取消 - 或者 - 在執(zhí)行至少一個(gè)Task實(shí)例期間拋出了異常。如果任務(wù)被取消,則AggregateException在其InnerExceptions集合中包含OperationCanceledException。

Task.WhenAll

如果任何提供的任務(wù)在故障狀態(tài)下完成,則返回的任務(wù)也將在Faulted狀態(tài)下完成,其中異常將包含來自每個(gè)提供的任務(wù)的一組未包裝的異常的聚合。

如果所提供的任務(wù)都沒有出現(xiàn)故障但至少其中一個(gè)被取消,則返回的任務(wù)將以“已取消”狀態(tài)結(jié)束。

如果沒有任何任務(wù)出現(xiàn)故障且沒有任何任務(wù)被取消,則生成的任務(wù)將以RanToCompletion狀態(tài)結(jié)束。如果提供的array / enumerable不包含任務(wù),則返回的任務(wù)將在返回給調(diào)用者之前立即轉(zhuǎn)換到RanToCompletion狀態(tài)。


查看完整回答
反對(duì) 回復(fù) 2019-07-29
?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

你可以創(chuàng)建許多任務(wù),如:

List<Task> TaskList = new List<Task>();foreach(...){
   var LastTask = new Task(SomeFunction);
   LastTask.Start();
   TaskList.Add(LastTask);}Task.WaitAll(TaskList.ToArray());


查看完整回答
反對(duì) 回復(fù) 2019-07-29
  • 3 回答
  • 0 關(guān)注
  • 1101 瀏覽

添加回答

了解更多

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)