C# 直接調用async Task方法而不出現waring

一般來說,直接調用一個async Task的異步方法會出現波浪線(提示在方法前面加await的warning)。

class Program
{

    private static async Task doSomethingAsync()
    {
        await Task.Run(()=>{
            // 做一些耗時的事情.
        });
    }

    static void Main()
    {
        doSomethingAsync(); // 這裏會出現波浪線,提示需要awiat
    }
}

但是如果在doSomethingAsync()異步方法前面增加awiat關鍵字,則更加嚴重,提示出錯,提示需要在Main()方法之前添加async,搞得有點煩人。

那如何纔可以不出現warning提示,又保持async Task異步方法的簽名和Main()方法簽名不做任何改變?

方法是有的,這個方法就是額外再申明一個Task的delegate:

delegate Task funcasync();

 然後,定義一個funcasync的委託變量,用這個委託變量去調用async Task函數:

    static void Main()
    {
        funcasync MyAsync = doSomethingAsync;
        NyAsync(); // 這裏不再出現波浪線. 一切OK。
    }

這個時候func()不會出現波浪線,調用也仍然是異步方式調用,沒任何問題。

發佈了102 篇原創文章 · 獲贊 113 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章