2009-02-27 8 views
5

Ho trovato questo codice:Qual è l'uso di Invoke() in .net?

this.Invoke(new EventHandler(EventGetSum)); 

Non è questo lo stesso di scrittura:

EventGetSum(); 

Qual è l'uso di questo?

+0

Questo è un titolo piuttosto brutto, forse dovresti considerare di cambiarlo in qualcosa di più descrittivo – grapefrukt

+0

Spunta questa domanda http://stackoverflow.com/questions/571706/shortest-way-to-write-a-thread-safe-access -Metodo-to-a-windows-forme-control/571.749 # 571.749 – alex2k8

risposta

13

Se si scrive EventGetSum() che immediatamente chiama il metodo EventGetSum.

Se si scrive new EventHandler(EventGetSum) che crea un delegato che (a sua volta) chiama EventGetSum quando viene richiamato.

La chiamata a Control.Invoke richiama il delegato specificato dal thread dell'interfaccia utente responsabile del controllo. Questo è necessario perché non devi accedere agli elementi dell'interfaccia utente da thread arbitrari.

5

Esegue il metodo EventGetSum nella discussione a cui appartiene la finestra this.

4

Questo è normalmente utilizzato quando si tratta di chiamate dell'interfaccia utente cross thread.

Vedere la documentazione MSDN per ISynchronizeInvoke.

Problemi correlati