2016-12-15 8 views
-3

Я смотрел на объяснение 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 таким образом?

ответ

2

Может кто-нибудь подтвердить, насколько это верно?

У вас есть основания сомневаться в этом? Не сказав, где вы нашли это объяснение, трудно критиковать его.

Есть много, многие детали не там, но основная идея звучит. Async-await - синтаксический сахар для построения асинхронных рабочих процессов, состоящих из задач с продолжением.

Или вы можете связать меня где-нибудь в Интернете, который описывает async-ожидание таким образом?

Это не сайт для рекомендаций по изделиям; вы можете выполнять собственные поисковые запросы в Интернете.

Если вы хотите, мои статьи на эту тему, они легко найти:

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

Они находятся в наиболее по-крайней мере, недавний заказ, так что если вы хотите, чтобы начать с самого начала, перейти в нижней части страницы.

Вы также можете ознакомиться с статьями, написанными Джоном Скитом, Стивеном Клири, Мэдсом Торгерсеном и Стивеном Тубом, которые также легко найти.