async
Los métodos son diferentes a los métodos normales. Lo que devuelva de los async
métodos está envuelto en un Task
.
Si no devuelve ningún valor (nulo), se envolverá Task
, si devuelve int
, se envolverá Task<int>
y así sucesivamente.
Si su método asíncrono necesita retornar int
, marcaría el tipo de retorno del método como Task<int>
y devolverá sin formato int
el Task<int>
. Compilador convertirá el int
que Task<int>
para usted.
private async Task<int> MethodName()
{
await SomethingAsync();
return 42;//Note we return int not Task<int> and that compiles
}
Del mismo modo, cuando devuelva Task<object>
el tipo de retorno de su método debe serTask<Task<object>>
public async Task<Task<object>> MethodName()
{
return Task.FromResult<object>(null);//This will compile
}
Como su método está regresando Task
, no debería devolver ningún valor. De lo contrario, no se compilará.
public async Task MethodName()
{
return;//This should work but return is redundant and also method is useless.
}
Tenga en cuenta que el método asíncrono sin una await
declaración no lo es async
.