Modelli di progettazione della programmazione asincrona
Aggiornamento: novembre 2007
Le operazioni asincrone vengono in genere utilizzate per eseguire attività per il cui completamento potrebbe essere necessario un periodo di tempo prolungato, ad esempio l'apertura di file di grandi dimensioni, la connessione a computer remoti o l'esecuzione di query su database. L'esecuzione di un'operazione asincrona avviene in un thread separato da quello principale dell'applicazione. Quando un'applicazione chiama i metodi per elaborare un'operazione in modo asincrono, può continuare a essere eseguita mentre il metodo asincrono completa l'attività.
In .NET Framework sono disponibili due modelli di progettazione per le operazioni asincrone:
Operazioni asincrone che utilizzano oggetti IAsyncResult.
Operazioni asincrone che utilizzano eventi.
Il modello di progettazione IAsyncResult consente un'ampia gamma di modelli di programmazione, ma è più complesso da comprendere e fornisce una flessibilità superiore a quella richiesta dalla maggior parte delle applicazioni. È opportuno che gli sviluppatori di librerie di classi implementino i metodi asincroni utilizzando il modello guidato da eventi, se possibile. In alcuni casi può essere necessario implementare anche il modello basato su IAsyncResult.
Per la documentazione relativa alle operazioni asincrone che utilizzano gli eventi, vedere Cenni preliminari sul modello asincrono basato su eventi.
La programmazione asincrona è una funzionalità supportata da diverse aree di .NET Framework, incluse le seguenti:
I/O di file, I/O di flusso, I/O di socket.
Rete.
Canali remoti (HTTP, TCP) e proxy.
Servizi Web XML creati mediante ASP.NET.
Web Form di ASP.NET.
Accodamento messaggi tramite la classe MessageQueue.
In questa sezione
Cenni preliminari sulla programmazione asincrona
Viene illustrato il modello di progettazione asincrona basato su IAsyncResult, che fornisce un modello di programmazione flessibile per la gestione delle operazioni asincrone.Chiamata di metodi asincroni tramite IAsyncResult
Vengono forniti esempi di codice in cui vengono illustrate le diverse modalità con cui le applicazioni possono rilevare il completamento di un'operazione asincrona.Programmazione asincrona tramite delegati
Viene illustrato come effettuare una chiamata a un metodo sincrono in modo asincrono.Programmazione multithreading con il modello asincrono basato su eventi
Viene illustrato il modello asincrono basato su eventi, che fornisce un modello di programmazione asincrona in cui vengono utilizzati gli eventi per la comunicazione cross-thread.