Есть метод:
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г.
или тут
Комментариев нет:
Отправить комментарий