91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Task.CompletedTask和Task.Result分析

發布時間:2021-12-09 11:02:18 來源:億速云 閱讀:376 作者:柒染 欄目:大數據

如何進行Task.CompletedTask和Task.Result分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

在任何返回Task的方法中,如果可以在不進行異步的情況下計算結果,則最好避免使用Task.Run。例如,一個簡短的計算函數,或者測試中返回了一個預先計算過的結果,則無需使用Task.Run。

例如,定義了一個返回Task的接口方法,但是在實現中,并沒有特別耗時的代碼。

public interface IComputer    {        Task Do();    Task<string> DoString();}
一般我們會這樣實現。即使實現中代碼很簡短。
public class Computer : IComputer    {        public Task Do()        {          return Task.Run(() => {            //邏輯代碼         });    }    public Task<string> DoString()            {                return Task.Run( () => {        //邏輯代碼 return "aaa";        });     }}
實際上,Task類上面有兩個幫助程序,,這些幫助程序讓代碼更具可讀性,并且所需的運行時開銷更少。

對于上述接口實現中的 Do方法,我更愿意使用Task.CompletedTask。

public Task Do()        {                    //邏輯代碼        return Task.CompletedTask;    }

我們看一下CompletedTask的定義

/// <summary>Gets a task that has already completed successfully.</summary>/// <returns>The successfully completed task.</returns>public static Task CompletedTask { get; }

如果返回Task <T>怎么辦?在這種情況下,如果您已經有了答案,請使用Task.FromResult包裝答案。

public Task<string> DoString() {    //邏輯代碼    return Task.FromResult("aaa");}

看一下FromResult的定義

/// <summary>Creates a <see cref="T:System.Threading.Tasks.Task`1" /> that's completed successfully with the specified result.</summary>/// <param name="result">The result to store into the completed task.</param>/// <typeparam name="TResult">The type of the result returned by the task.</typeparam>/// <returns>The successfully completed task.</returns>public static Task<TResult> FromResult<[Nullable(2)] TResult>(TResult result);

通過上述的改變,即實現了接口的實現,也減少了Task.Run調用的系統開銷。

看完上述內容,你們掌握如何進行Task.CompletedTask和Task.Result分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永州市| 马鞍山市| 辰溪县| 重庆市| 百色市| 连云港市| 明光市| 常熟市| 嘉义市| 株洲县| 延庆县| 云浮市| 正蓝旗| 宁陵县| 巴里| 青岛市| 图木舒克市| 固始县| 棋牌| 固镇县| 新化县| 广安市| 高雄市| 区。| 仲巴县| 雅安市| 老河口市| 嘉禾县| 安吉县| 龙游县| 正宁县| 遂昌县| 安西县| 东辽县| 西宁市| 栖霞市| 澜沧| 宝应县| 仲巴县| 五大连池市| 任丘市|