是不是async-await在功能上等同于任务延续?

时间:2016-12-15 19:33:16

标签: c# .net asynchronous async-await task

我正在查看async - await的说明

async Task<int> IndexWordsFromAsync(string url)
{
    string content = await httpClient.GetStringAsync(url);
    int wordCount = AddContentToIndex(content);
    return wordCount;
}

int AddContentToIndex(string content)
{
   ... 
}

相当于

Task<int> task = IndexWordsFromAsync(url);
var currentContext = SynchronizationContext.Current;
task.ContinueWith(delegate
{
    if(currentContext == null)
        RestOfMethod();
    else
        currentContext.Post(delegate { RegstOfMethod(); }, null);
}, TaskScheduler.Current);

有人可以确认这是真的吗?或者,您可以将我链接到互联网上以async - await这样描述的地方吗?

1 个答案:

答案 0 :(得分:3)

  

有人可以确认这是真的吗?

你有理由怀疑吗?没有说你在哪里找到这个解释就很难批评它。

有很多很多细节错了,但基本的想法是合理的。 Async-await是构造由具有continuation的任务组成的异步工作流的语法糖。

  

或者,您可以将我链接到互联网上描述异步的地方 - 等待这种方式吗?

这不是推荐文章的网站;你可以进行自己的网络搜索。

如果你想要我关于这个主题的文章,很容易找到它们:

https://blogs.msdn.microsoft.com/ericlippert/tag/async/

这些是从最近到最近的顺序,所以如果你想从头开始,请转到第二页的底部。

您也可以考虑阅读Jon Skeet,Stephen Cleary,Mads Torgersen和Stephen Toub撰写的文章,这些文章也很容易找到。