Magiczne async

W sieci jest wiele materiałów na temat konstrukcji async-away. Postanowiłem zbadać kilka ciekawostek.

Użycie async bez away

Rozważmy kod

Metoda „Pierwsza” jest napisana zgodnie ze sztuką. Budowa metody „Druga” budzi sprzeciw kompilatora:

Użyłem strony http://tryroslyn.azurewebsites.net aby obnażyć prawdę. Oto prawdziwy „kod pod spodem” (fragment)

Zabawa w „znajdź różnice” skutkuje tylko tym, że różnią się nazwy metod. Różnica natomiast jest w konstrukcji maszyny stanu dla każdej z metod. W pierwszym przypadku to:

W drugim znacznie krócej: