asyncLos métodos son diferentes a los métodos normales. Lo que devuelva de los asyncmé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 intel Task<int>. Compilador convertirá el intque 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 awaitdeclaración no lo es async.