Nadal uczenie się o oczekiwaniu async. Wpadłem na przykłady podobne do następujących:Oczekiwanie na ostatnią linię metody
public async Task MethodAsync()
{
await Method01Async();
await Method02Async();
}
Jaki jest cel ostatniego czekania? Method02Async to ostatnia linia metody MethodAsync. Więc nie ma żadnej metody pozostającej - żadnych linii poniżej - nie ma nic, co można by nazwać w wywołaniu zwrotnym generowanym przez kompilator ... Czy brakuje mi czegoś?
W szczególności wyobraź sobie, że Method02Async to, powiedzmy, Task.Delay (5000). Byłoby niezmiernie dziwne, gdyby ktoś powiedział "czekaj na MethodAsync()", a następnie to zadanie zostało zakończone * przed * opóźnieniem zakończone! –
Ale czy nie lepiej napisać "return Method02Async();" jako ostatnia linia? – duduamar
@duduamar: To by się nie skompilowało, chyba że usuniesz 'async' z' MethodAsync'. Co oznacza, że musielibyśmy również usunąć 'await' z' Method01Async'. Znaczna zmiana w zachowaniu. –