Programmazione asincrona tramite delegati
I delegati consentono di chiamare un metodo sincrono in modo asincrono. Quando si chiama un delegato in modo sincrono, il metodo Invoke
chiama il metodo di destinazione direttamente sul thread corrente. Se viene chiamato il metodo BeginInvoke
, Common Language Runtime (CLR) accoda la richiesta e restituisce immediatamente il controllo al chiamante. Il metodo di destinazione viene chiamato in modo asincrono in un thread del pool di thread. Il thread originale, che ha inviato la richiesta, può di continuare l'esecuzione in parallelo con il metodo di destinazione. Se nella chiamata al metodo BeginInvoke
, è stato specificato un metodo di callback, quest'ultimo verrà chiamato al termine del metodo di destinazione. Nel metodo di callback il metodo EndInvoke
ottiene il valore restituito e tutti i parametri di input/output o solo di output. Se nella chiamata a BeginInvoke
non viene specificato alcun metodo di callback, EndInvoke
può essere chiamato dal thread che ha effettuato la chiamata a BeginInvoke
.
Importante
I compilatori devono creare classi delegate con metodi Invoke
, BeginInvoke
e EndInvoke
usando la firma del delegato specificata dall'utente. I metodi BeginInvoke
e EndInvoke
devono essere contrassegnati come nativi. Poiché tali metodi sono contrassegnati come nativi, Common Language Runtime ne specifica automaticamente l'implementazione in fase di caricamento della classe. Il caricatore garantisce anche che non ne venga eseguito l'override.
In questa sezione
Chiamata di metodi sincroni in modalità asincrona
Descrive l'uso di delegati per eseguire chiamate asincrone a metodi comuni e contiene semplici esempi di codice in cui si illustrano i quattro modi disponibili per attendere la risposta di una chiamata asincrona.
Sezioni correlate
Event-based Asynchronous Pattern (EAP) (Modello asincrono basato su eventi, EAP)
Descrive la programmazione asincrona in .NET.