Что на самом деле делает Control.Invoke под капотом? - PullRequest
1 голос
/ 14 апреля 2019

Я предполагаю, что мьютекс заблокирован, когда переданная функция выполняется, но не очень уверен.Другой вопрос, скажем, label1 является членом form1.Мои эксперименты показали, что Invoke использует form1 или label1 для обновления свойства Text label1, оба работают.Но в чем разница?

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Метод Control.Invoke () отправляет вызов переданного метода в цикл сообщений потока элемента управления и возвращается после завершения вызова (после вызова метода и переключения контекста обратно в ваш поток).

Метод Control.BeginInvoke () просто отправляет вызов в очередь сообщений потока элемента управления и немедленно продолжается (не ожидает выполнения переданного метода).

Вы можете использовать оба метода для обновления пользовательского интерфейса из фоновых потоков.

Не имеет значения, какой элемент управления (или форма) вы используете для вызова Invoke или BeginInvoke.

0 голосов
/ 15 апреля 2019

Другой вопрос, но этот ответ поможет вам понять Thread Control.Invoke.

Thread Control.Invoke

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...