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()不会出现波浪线,调用也仍然是异步方式调用,没任何问题。

发布了108 篇原创文章 · 获赞 126 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_16587307/article/details/104319918