Ответы с форумов MSDN

Несколько await подряд в C#

Date: 16.05.2019 6:15:37

Когда await FooAsync возвращает что-то, что тоже можно ждать (т.е. имеющее метод GetAwaiter). Например, когда FooAsync возвращает Task<Task<string>>.

Где это можно применить на практике - затрудняюсь сказать. В качестве абсурдного примера - если определить вот такой класс:

class T : System.Runtime.CompilerServices.INotifyCompletion
{
            public T GetAwaiter() => this;
            public void OnCompleted(Action continuation) {  }
            public bool IsCompleted => true;
            public T GetResult() => this;
            public static T Foo() => new T();
}
То вызов вида "await await await await await await T.Foo();" успешно скомпилируется для любого количества await (но, разумеется, не будет иметь никакого видимого эффекта)

 



Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub