2009-02-27 15 views
5

znalazłem ten kod:Jaki jest pożytek z Invoke() w .net?

this.Invoke(new EventHandler(EventGetSum)); 

Czy to nie to samo co piśmie:

EventGetSum(); 

Po co z tego?

+0

To bardzo zły tytuł, może powinieneś rozważyć zmianę go na coś bardziej opisowego? – grapefrukt

+0

Sprawdź to pytanie http://stackoverflow.com/questions/571706/shortest-way-to-write-a-thread-safe-access -method-do-windows-forms-control/571749 # 571749 – alex2k8

Odpowiedz

13

Jeśli napiszesz EventGetSum(), że natychmiast dzwoni metody EventGetSum.

Jeśli napiszesz new EventHandler(EventGetSum), który utworzy delegata, który (z kolei) wywoła EventGetSum, gdy zostanie wywołany.

Wywołanie Control.Invoke wywołuje podanego delegata z wątku interfejsu użytkownika odpowiedzialnego za formant. Jest to konieczne, ponieważ nie można uzyskać dostępu do elementów interfejsu z dowolnych wątków.

5

Wykonuje on metodę EventGetSum w wątku, do której należy okno this.

4

Zwykle jest używany do obsługi połączeń z wieloma wątkami.

Zobacz dokumentację MSDN dla ISynchronizeInvoke.

Powiązane problemy