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

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

預(yù)定義任務(wù)多次異步返回

預(yù)定義任務(wù)多次異步返回

C#
侃侃爾雅 2022-06-18 16:18:20
我在班級(jí)頂部定義了一個(gè)任務(wù),如下所示:Task<string> MainTask {get;set;}然后在應(yīng)用程序內(nèi)部構(gòu)建此任務(wù)。MainTask = new Task<string>( () => {    return Task.Run<string>( async () =>     {        await GetResult();    }).Result;});我想循環(huán),直到任務(wù)返回?cái)?shù)據(jù),但是一旦任務(wù)第一次完成,我就無(wú)法再次啟動(dòng)它。bool gotResult = false;While(gotResult == false){  MainTask.Start();  MainTask.Wait();  if(MainTask.Result)  {    gotResult = true;  }}
查看完整描述

1 回答

?
回首憶惘然

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

MainTask不應(yīng)該是 a Task,而應(yīng)該是 a Func<Task>(或者,在這種情況下,由于異步操作似乎提供了一個(gè)布爾值 a Func<Task<bool>>,因此您可以隨時(shí)通過(guò)簡(jiǎn)單地調(diào)用方法來(lái)啟動(dòng)異步操作。


所以定義為:


Func<Task<bool>> AsyncOperation {get;set;}

將其用作:


while(!await AsyncOperation())

{

    //do nothing

}

至于分配它,您只需分配您擁有的異步方法:


AsyncOperation = GetResult;

請(qǐng)注意,您真的不應(yīng)該Task每次都使用構(gòu)造函數(shù)。不要處理未開始的任務(wù),它只會(huì)引起混亂。也不需要用來(lái)Task.Run調(diào)用異步方法。它已經(jīng)是異步的。也不需要使用 async lambda 來(lái)調(diào)用異步方法,這兩件事都只是增加了開銷而沒有增加任何價(jià)值。


查看完整回答
反對(duì) 回復(fù) 2022-06-18
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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