C# LanguageAsync-Await

introduzione

In C #, un metodo dichiarato async non bloccherà all'interno di un processo sincrono, nel caso in cui si stiano utilizzando operazioni basate sull'I / O (ad esempio accesso Web, utilizzo di file, ...). Il risultato di tali metodi asincroni contrassegnati può essere atteso tramite l'uso della parola chiave await .

Osservazioni

Un metodo async può restituire void , Task o Task<T> .

Il tipo di ritorno Task attenderà che il metodo finisca e il risultato sarà void . Task<T> restituirà un valore da tipo T dopo il completamento del metodo.

async metodi async dovrebbero restituire Task o Task<T> , in contrasto con il void , in quasi tutte le circostanze. non è possibile await metodi async void , il che porta a una serie di problemi. L'unico scenario in cui un async deve restituire void è nel caso di un gestore di eventi.

async / await funziona trasformando il tuo metodo async in una macchina a stati. Lo fa creando una struttura dietro le quinte che memorizza lo stato corrente e qualsiasi contesto (come le variabili locali) e espone un metodo MoveNext() per far avanzare gli stati (ed eseguire qualsiasi codice associato) ogni volta che un attendibile atteso si completa.

Async-Await Esempi correlati