Страницы

Поиск по вопросам

пятница, 14 июня 2019 г.

Условия на тип возвращаемого значения метода при использовании await?

Есть метод:
public async T Method() { T result = await doSomeStuff();
return result; }
Какие условия должны быть выполнены для T, чтобы этот метод можно было вызвать:
public async void AnotherMethod() { await Method(); }


Ответ

По идее, await можно использовать для любого типа, в котором есть метод GetAwaiter, возвращающий реализацию интерфейса INotifyCompletion
public AlexsAwaiter GetAwaiter() { return new AlexsAwaiter(); }
class AlexsAwaiter : INotifyCompletion { public bool IsCompleted { get { ... } } public void OnCompleted(Action continuation) { ... } public void GetResult() { ... } }
Тип, возвращаемый GetResult и будет возвращаться из await
Подробнее лучше почитать например в книге
Дэвис Д. - Асинхронное программирование в C# 5.0 - 2013г.
или тут

Комментариев нет:

Отправить комментарий