Как позволить рабочему потоку обновить пользовательский интерфейс в оконных формах [без использования Control.Invoke ()]? - PullRequest
0 голосов
/ 14 ноября 2009

Я знаю, как используются Control.InvokeRequired () и Control.Invoke ().

но мне было интересно, возможно ли использовать какой-либо другой метод для оповещения потока пользовательского интерфейса об изменении данных, а затем позволить потоку пользовательского интерфейса обновить свои элементы управления без использования control.invoke ().

Насколько я помню, это было возможно раньше в mfc, посылая сообщения в главное окно, поэтому мне интересно, существует ли что-то подобное в формах окон.

Ответы [ 3 ]

3 голосов
/ 14 ноября 2009

Это именно то, что делает Invoke.

Вот еще немного информации для любопытных: http://weblogs.asp.net/justin_rogers/pages/126345.aspx

2 голосов
/ 14 ноября 2009

invoke / begininvoke реализуется путем отправки сообщения.

1 голос
/ 14 ноября 2009

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

Это ужасно ужасная идея, и сейчас я собираюсь наказать себя за предложение.

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