Looking for c# Keywords? Try Ask4Keywords

C# Language Псевдокод для ключевых слов async / await


пример

Рассмотрим простой асинхронный метод:

async Task Foo()
{
    Bar();
    await Baz();
    Qux();
}

Упрощение, мы можем сказать, что этот код на самом деле означает следующее:

Task Foo()
{
    Bar();
    Task t = Baz();
    var context = SynchronizationContext.Current;
    t.ContinueWith(task) =>
    {
        if (context == null)
            Qux();
        else
            context.Post((obj) => Qux(), null);
    }, TaskScheduler.Current);

    return t;
}

Это означает, что async слова async / await используют текущий контекст синхронизации, если он существует. Т.е. вы можете написать код библиотеки, который будет корректно работать в пользовательских интерфейсах, веб-и консольных приложениях.

Исходная статья .