Delegati asincroni
I delegati asincroni consentono di chiamare un metodo sincrono in modalità asincrona. Quando si chiama un delegato in modo sincrono, il metodo Invoke chiamerà il metodo di destinazione direttamente nel thread corrente. Se il compilatore supporta i delegati asincroni, genererà il metodo Invoke e i metodi BeginInvoke e EndInvoke. Se viene chiamato il metodo BeginInvoke, Common Language Runtime accoderà la richiesta e verrà restituito immediatamente al chiamante. Il metodo di destinazione verrà chiamato in un thread del pool di thread. Il thread originale che ha inviato la richiesta sarà libero di continuare l'esecuzione parallelamente al metodo di destinazione, che viene eseguito in un thread del pool di thread. Se è stato specificato un callback nel metodo BeginInvoke, verrà chiamato al momento della restituzione del metodo di destinazione. Nel callback il metodo EndInvoke viene utilizzato per ottenere il valore restituito e i parametri in/out. Se non è stato specificato alcun callback nel metodo BeginInvoke, sarà possibile utilizzare il metodo EndInvoke nel thread originale che ha inviato una richiesta.
Nota Il compilatore Microsoft C# attualmente supporta un delegato asincrono.
In questa sezione
- Utilizzo dei delegati
Viene descritto come implementare i delegati asincroni a livello di programmazione. - Supporto del compilatore e di Common Language Runtime
Viene descritto il supporto del compilatore per il runtime mediante i metodi BeginInvoke ed EndInvoke con le firme del metodo asincrono. - Metodi delegati BeginInvoke ed EndInvoke forniti dal compilatore
Vengono descritti problemi specifici del compilatore relativi ai metodi BeginInvoke ed EndInvoke. - Esempio di programmazione di delegati asincroni
Viene fornito un semplice esempio di utilizzo dei delegati asincroni, in cui vengono fattorizzati alcuni numeri.
Sezioni correlate
- Programmazione asincrona
Viene descritto l'orientamento per la programmazione asincrona con .NET Framework.