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

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

等待與task.Result相同的已完成任務(wù)?

等待與task.Result相同的已完成任務(wù)?

C#
人到中年有點(diǎn)甜 2019-08-13 09:41:06
等待與task.Result相同的已完成任務(wù)?我正在閱讀Stephen Cleary撰寫的“ C#Cookbook中的并發(fā) ”,我注意到以下技巧:var completedTask = await Task.WhenAny(downloadTask, timeoutTask);  if (completedTask == timeoutTask)     return null;  return await downloadTask;downloadTask是一個(gè)調(diào)用httpclient.GetStringAsync,timeoutTask正在執(zhí)行Task.Delay。如果它沒有超時(shí),那么downloadTask就已經(jīng)完成了。downloadTask.Result鑒于任務(wù)已經(jīng)完成,為什么有必要做第二次等待而不是返回?
查看完整描述

2 回答

?
斯蒂芬大帝

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

如果它timeoutTask是一種產(chǎn)品,這是有道理的Task.Delay,我相信它在書中的含義。

Task.WhenAny返回Task<Task>,其中內(nèi)部任務(wù)是您作為參數(shù)傳遞的任務(wù)之一。它可以像這樣重寫:

Task<Task> anyTask = Task.WhenAny(downloadTask, timeoutTask);await anyTask;if (anyTask.Result == timeoutTask)  
  return null;  return downloadTask.Result;

在任何一種情況下,由于downloadTask已經(jīng)完成,因此return await downloadTask和之間存在非常小的差異return downloadTask.ResultAggregateException正如@KirillShlenskiy在評論中所指出的那樣,后者將拋出任何原始異常。前者只會重新拋出原始異常。

在任何一種情況下,無論何處處理異常,都應(yīng)該檢查AggregateException及其內(nèi)部異常,以找出錯(cuò)誤原因。


查看完整回答
反對 回復(fù) 2019-08-13
  • 2 回答
  • 0 關(guān)注
  • 723 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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