asyncMethoden unterscheiden sich von normalen Methoden. Was auch immer Sie von asyncMethoden zurückgeben, sind in a eingeschlossenTask .
Wenn Sie keinen Wert (void) zurückgeben, wird er eingewickelt Task. Wenn Sie intihn zurückgeben, wird er eingewickelt Task<int>und so weiter.
Wenn Ihre asynchrone Methode zurückgegeben werden muss, intmarkieren Sie den Rückgabetyp der Methode als Task<int>und geben einfach intnicht den zurück Task<int>. Compiler wird die konvertieren intzu Task<int>für Sie.
private async Task<int> MethodName()
{
await SomethingAsync();
return 42;//Note we return int not Task<int> and that compiles
}
Sameway, Wenn Sie zurückgeben, sollte der Rückgabetyp Task<object>Ihrer Methode seinTask<Task<object>>
public async Task<Task<object>> MethodName()
{
return Task.FromResult<object>(null);//This will compile
}
Da Ihre Methode zurückgibt Task, sollte sie keinen Wert zurückgeben. Andernfalls wird es nicht kompiliert.
public async Task MethodName()
{
return;//This should work but return is redundant and also method is useless.
}
Beachten Sie, dass eine asynchrone Methode ohne awaitAnweisung dies nicht ist async.