Используя TPL с .NET 4, я пытаюсь решить, как создавать API, которые работают с фьючерсами.Одна возможность, которая пришла мне в голову, состояла в том, чтобы имитировать асинхронный шаблон, но без метода End(IAsyncResult)
:
public Task<int> BeginGetAge()
{
// create and return task
}
public int GetAge()
{
return this.BeginGetAge().Result;
}
Таким образом, вызывающие абоненты могут решить, вызывать ли блокирующую или неблокирующую версию GetAge()
.Более того, они имеют доступ к будущему, поэтому могут строить продолжения поверх него и так далее.
Является ли эта идиома верной?Есть какие-то очевидные недостатки или проблемы, которые я пропускаю?Возможно, оно даже имеет официальное название?