Usando TPL con .NET 4, estoy tratando de decidir cómo diseñar API que se ocupen de los futuros. Una posibilidad que se me ocurrió fue para imitar el patrón asincrónico pero sin un método End(IAsyncResult)
:¿Existe este idioma TPL?
public Task<int> BeginGetAge()
{
// create and return task
}
public int GetAge()
{
return this.BeginGetAge().Result;
}
Como tal, las personas que llaman pueden decidir si se debe llamar el bloqueo o sin bloqueo versión de GetAge()
. Además, tienen acceso al futuro, por lo que pueden construir continuaciones encima, etcétera.
¿Es este idioma válido? ¿Hay algún inconveniente o problema obvio que me falta? ¿Tal vez incluso tenga un nombre oficial?
Su segundo caso se beneficiaría enormemente de 'aguardar', creo. – user7116
FYI, Stephen Toub ha publicado sobre esto (ofreciendo envoltorios de sincronización para métodos asíncronos) - tl; dr avoid it :) ver http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638. aspx y también http://blogs.msdn.com/b/pfxteam/archive/2012/03/24/10287244.aspx –