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

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

我應(yīng)該避免'async void'事件處理程序嗎?

我應(yīng)該避免'async void'事件處理程序嗎?

千萬里不及你 2019-07-26 17:04:55
我應(yīng)該避免'async void'事件處理程序嗎?我知道使用fire-and-forget async void方法來啟動任務(wù)通常被認(rèn)為是一個壞主意,因?yàn)闆]有跟蹤任務(wù)的跟蹤,處理可能在這種方法中拋出的異常是很棘手的。我一般應(yīng)該避免使用async void事件處理程序嗎?例如,private async void Form_Load(object sender, System.EventArgs e){         await Task.Delay(2000); // do async work         // ...}我可以像這樣重寫它:Task onFormLoadTask = null; // track the task, can implement cancellationprivate void Form_Load(object sender, System.EventArgs e){         this.onFormLoadTask = OnFormLoadTaskAsync(sender, e);} private async Task OnFormLoadTaskAsync(object sender, System.EventArgs e){         await Task.Delay(2000); // do async work         // ...}除了可能的重入之外,異步事件處理程序的水下巖石是什么?
查看完整描述

3 回答

?
慕標(biāo)琳琳

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

async void 除了在事件處理程序中使用時,指南是要避免的,因此async void在事件處理程序中使用是可以的。

也就是說,出于單元測試的原因,我經(jīng)常想要分析所有async void方法的邏輯。例如,

public async Task OnFormLoadAsync(object sender, EventArgs e){
  await Task.Delay(2000);
  ...}private async void Form_Load(object sender, EventArgs e){
  await OnFormLoadAsync(sender, e);}


查看完整回答
反對 回復(fù) 2019-07-26
?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個贊

我一般應(yīng)該避免異步void事件處理程序嗎?

通常,事件處理程序是一種情況,其中void異步方法不是潛在的代碼氣味。

現(xiàn)在,如果您確實(shí)需要出于某種原因跟蹤任務(wù),那么您描述的技術(shù)是完全合理的。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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