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

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

在即發(fā)即忘的方法中等待

在即發(fā)即忘的方法中等待

C#
翻翻過去那場雪 2021-07-01 15:53:56
我注意到,當(dāng)await一個方法在我正在觸發(fā)并且忘記應(yīng)用程序的方法中時,它只會讓它盡可能遠(yuǎn),await然后它會像它擊中return. 在我目前正在查看的簡化版本中,您可能有:public void DoTheThing() {    ...    Task fireAndForget = SendAsync(emails);}public async Task SendAsync(List<Email> emails) {    foreach (var email in emails) {        var to = email.to;        var body = email.body;        await EmailSenderAsync(to,body);        await Task.Delay(3000);    }}這永遠(yuǎn)不會超過這條線await EmailSenderAsync(to,body);,只會emails發(fā)送第一封電子郵件。EmailSenderAsync是外部代碼,所以我無法進(jìn)入它。添加一個等待SendAsync(emails)將使一切正常......但它不是火和忘記。我認(rèn)識到這可能不是針對這種特殊情況的最佳解決方案。我更想了解為什么會失敗以及您可以使用什么模式async在火災(zāi)中創(chuàng)建功能并忘記按預(yù)期工作。
查看完整描述

2 回答

?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗 獲得超9個贊

前幾天我遇到了類似的問題。我所做的是將我的await方法聲明為任務(wù),然后將它們傳遞給Task.WhenAll.


試試這個:


var taskEmailSendAsync = EmailSenderAsync(to, body);

var taskDelay = Task.Delay(3000);


await Task.WhenAll(taskEmailSenderAsync, taskDelay)


查看完整回答
反對 回復(fù) 2021-07-03
  • 2 回答
  • 0 關(guān)注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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