2012-10-01 13 views
7

Dovrei usare asincrona/attendono da ora in poi (C# 5) ogni volta quando io non richiedono l'esito di un metodo immediatelly (Task <>) o devo sparare un metodo one-off (void)?Quando dovrei usare async/await e quando no?

Devo usarlo in tutti i casi in cui ho usato la classe Task in C# 4 e ho spinto il lavoro sui thread Backgroud?

Devo usarlo solo nei casi in cui ho usato asNet Method Metodi Net?

Confuso.

Sto fondamentalmente alla ricerca di una spiegazione semplice in quali casi dovrei usare attendono/asincrona e quando no.

risposta

8

async/await può essere utilizzato quando si dispone operazioni asincrone. Molte operazioni sono naturalmente asincrone (come I/O); Raccomando async per tutti quelli. Altre operazioni sono naturalmente sincrone (come il calcolo); Raccomando di usare metodi sincroni per quelli.

È possibile utilizzare Task.Run con async per lavoro in background se è necessario eseguire il codice sincrono in modo asincrono. Spiego sul mio blog perché questo è better than BackgroundWorker and asynchronous delegates.

È inoltre possibile utilizzare async per sostituire altre forme di elaborazione asincrona, ad esempio, lo stile IAsyncResult.

È utilizzare async in qualsiasi situazione in cui si dispone di un'operazione asincrona.

Problemi correlati