如何進(jìn)行Task.CompletedTask和Task.Result分析,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),平昌企業(yè)網(wǎng)站建設(shè),平昌品牌網(wǎng)站建設(shè),網(wǎng)站定制,平昌網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,平昌網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
例如,定義了一個(gè)返回Task的接口方法,但是在實(shí)現(xiàn)中,并沒(méi)有特別耗時(shí)的代碼。
public interface IComputer { Task Do(); TaskDoString();}
一般我們會(huì)這樣實(shí)現(xiàn)。即使實(shí)現(xiàn)中代碼很簡(jiǎn)短。
public class Computer : IComputer { public Task Do() { return Task.Run(() => { //邏輯代碼 }); } public TaskDoString() { return Task.Run( () => { //邏輯代碼 return "aaa"; }); }}
實(shí)際上,Task類(lèi)上面有兩個(gè)幫助程序,,這些幫助程序讓代碼更具可讀性,并且所需的運(yùn)行時(shí)開(kāi)銷(xiāo)更少。
對(duì)于上述接口實(shí)現(xiàn)中的 Do方法,我更愿意使用Task.CompletedTask。
public Task Do() { //邏輯代碼 return Task.CompletedTask; }
我們看一下CompletedTask的定義
///Gets a task that has already completed successfully. ///The successfully completed task. public static Task CompletedTask { get; }
如果返回Task
public TaskDoString() { //邏輯代碼 return Task.FromResult("aaa");}
看一下FromResult的定義
///Creates a /// The result to store into the completed task.///that's completed successfully with the specified result. The type of the result returned by the task. ///The successfully completed task. public static TaskFromResult<[Nullable(2)] TResult>(TResult result);
通過(guò)上述的改變,即實(shí)現(xiàn)了接口的實(shí)現(xiàn),也減少了Task.Run調(diào)用的系統(tǒng)開(kāi)銷(xiāo)。
看完上述內(nèi)容,你們掌握如何進(jìn)行Task.CompletedTask和Task.Result分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!