Condividi tramite


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, BeginInvokee 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.

Event-based Asynchronous Pattern (EAP) (Modello asincrono basato su eventi, EAP)
Descrive la programmazione asincrona in .NET.

Vedi anche