Async todo el camino hacia abajo?
Intentando entender el nuevo patrón async / await, tengo una pregunta a la que no puedo encontrar respuesta, a saber, si debo decorar mis métodos con async, si tengo la intención de llamar a esos métodos desde otras funciones async, o simplemente regresarTask
s donde sea apropiado?
En otras palabras, ¿cuál de estas clases A, B o C es mejor y por qué?
class A<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public async Task<T> foo2() //Could be consumed
{
return await foo3();
}
private async Task<T> foo3() //Private
{
return await Task.Run(...);
}
}
class B<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public async Task<T> foo2() //Could be consumed
{
return await foo3();
}
private Task<T> foo3() //Private
{
return Task.Run(...);
}
}
class C<T>
{
public async Task<T> foo1() //Should be consumed
{
return await foo2();
}
public Task<T> foo2() //Could be consumed
{
return foo3();
}
private Task<T> foo3() //Private
{
return Task.Run(...);
}
}
Parece redundante decorar en exceso los métodos, así que naturalmente me inclino haciaC
, pero al mismo tiempo se siente un poco incómodo trabajar conTask<T>
a menos que uses elawait
palabra clave.