Какая польза от Invoke () в .net? - PullRequest
       10

Какая польза от Invoke () в .net?

5 голосов
/ 27 февраля 2009

Я нашел этот код:

this.Invoke(new EventHandler(EventGetSum));

Разве это не то же самое, что писать:

EventGetSum();

Какая польза от этого?

Ответы [ 3 ]

13 голосов
/ 27 февраля 2009

Если вы напишите EventGetSum(), что немедленно вызовет метод EventGetSum.

Если вы напишите new EventHandler(EventGetSum), это создаст делегата, который будет вызывать EventGetSum при его вызове.

Вызов Control.Invoke вызывает указанный делегат из потока пользовательского интерфейса, ответственного за элемент управления. Это необходимо, потому что вы не должны получать доступ к элементам пользовательского интерфейса из произвольных потоков.

5 голосов
/ 27 февраля 2009

Выполняет метод EventGetSum в потоке, которому принадлежит окно this.

4 голосов
/ 27 февраля 2009

Обычно это используется при работе с многопоточными вызовами пользовательского интерфейса.

Посмотрите документацию MSDN для ISynchronizeInvoke.

...