Используя TPL с .NET 4, я пытаюсь решить, как создавать API, которые имеют дело с фьючерсами. Одна из возможностей, что произошло мне было имитировать рисунок асинхронной но без End(IAsyncResult)
метода:Существует ли эта идиома TPL?
public Task<int> BeginGetAge()
{
// create and return task
}
public int GetAge()
{
return this.BeginGetAge().Result;
}
Таким образом, вызывающий абонент может решить, следует ли вызвать блокирование или неблокирующей версию GetAge()
. Более того, у них есть доступ к будущему, поэтому они могут построить продолжение над ним и т. Д.
Действительно ли эта идиома? Есть ли какие-то очевидные недостатки или проблемы, которые мне не хватает? Возможно, у него даже есть официальное название?
Ваш второй случай сильно выиграет от 'ожидания ', я верю. – user7116
FYI, Стивен Туб опубликовал об этом (предлагая обертки для асинхронных методов) - tl; dr избегает этого :) см. Http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638. aspx, а также http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx –