如果方法具有关键字" async"则该方法始终是异步的。和#34;等待"?

时间:2018-01-24 08:41:49

标签: c# .net asynchronous async-await

许多博客介绍" 异步" &安培; " 等待",他们通常使用这样的演示代码:

public async Task Go()
{
    var t = await GetNameAsync();
    Console.WriteLine(t);
}

public async Task<string> GetNameAsync()
{
    await Task.Delay(10000);
    return "Jim";
}

我对此非常困惑,就像上面的方法一样,一旦遇到这个方法,它会在第一行得到等待时被阻止。我认为它们是同步方法,即使它是async&amp;等待。

我很困惑这些方法是Async吗?

根据我的理解,异步方法应如下所示,它将获得一个任务,但它不会立即运行,它应该执行一些同步,然后等待任务。

public async Task<string> GetNameAsync()
{
    var t = Task.Delay(10000);
    //1.do some thing
    //2.do some thing
    await t;

    return "Jim";
}

async之间的异步和同步差异并不总是比同步更快。 异步:

public async Task<string> GetNameAsync()
{
    await Task.Delay(10000);
    return "Jim";
}

同步:

public string GetNameAsync()
{
    Task.Delay(10000);
    return "Jim";
}

0 个答案:

没有答案