async
Methoden unterscheiden sich von normalen Methoden. Was auch immer Sie von async
Methoden zurückgeben, sind in a eingeschlossenTask
.
Wenn Sie keinen Wert (void) zurückgeben, wird er eingewickelt Task
. Wenn Sie int
ihn zurückgeben, wird er eingewickelt Task<int>
und so weiter.
Wenn Ihre asynchrone Methode zurückgegeben werden muss, int
markieren Sie den Rückgabetyp der Methode als Task<int>
und geben einfach int
nicht den zurück Task<int>
. Compiler wird die konvertieren int
zu 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 await
Anweisung dies nicht ist async
.