Le parole chiave async
e await
non renderanno più reattiva la tua applicazione. Semplicemente rendono la chiamata e la gestione dei metodi che restituiscono oggetti Task
più convenienti. Per fare in modo che async
/ await
usi effettivamente thread in background, dovrai combinare l'utilizzo di elementi come:
-
Task.Start()
- Avvia una determinata attività utilizzando TaskScheduler
.
- PLINQ - Esegue una serie di operazioni in parallelo, restituisce un'attività.
-
TaskCompletionSource
- Un modo personalizzato per gestire attività asincrone. Un posto che ho usato è stato quello di gestire eventi provenienti da un controllo WebBrowser
.
- Altri metodi di
async
, come molte delle funzioni dell'API di Win 8.
In altre parole, async
/ await
è un'estensione di Attività- Basato su modello asincrono . Puoi trovare una grande quantità di informazioni, inclusi molti esempi, qui .
Il BackgroundWorker
è un componente WinForms che crea 1 thread in background utilizzando il pattern asincrono basato su eventi , ed è possibile popolare il lavoro svolto su questo thread in background con il proprio codice nel gestore di eventi DoWork
. In generale, Microsoft non consiglia più di utilizzare questo modello (vedere la parte inferiore della pagina qui ), anche se lo conosci già potrebbe essere ancora una semplice opzione.
Un'altra opzione non menzionata è Reactive Extensions per .NET . Questo è un altro ottimo framework per aggiungere reattività alle tue app.