UpdateAllViews () из рабочего потока? - PullRequest
2 голосов
/ 03 апреля 2010

У меня есть рабочий поток в классе, который принадлежит ChildView. (Я намерен в конечном итоге переместить это в Doc.) Когда рабочий поток завершает задачу, я хочу, чтобы все представления были обновлены. Как я могу позвонить, чтобы сказать Доку, чтобы он выпустил UpdateAllViews ()? Или есть лучший подход?

Спасибо.


Добавлено OP: Я ищу простое решение. Приложение работает на одном компьютере с одним процессором и не требует доступа к сети (или Интернету). Там нет ничего, чтобы вызвать тупик.

Я думаю, что я хотел бы, чтобы рабочая ветка опубликовала (или отправила) сообщение, чтобы заставить представления обновляться.

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

Я просто застрял в получении правильной комбинации получения дескриптора окна, публикации сообщения и ответа на сообщение в правильных функциях и классах для компиляции и функционирования вообще.

1 Ответ

2 голосов
/ 04 апреля 2010

UpdateAllViews не является потокобезопасным, поэтому вам необходимо перенаправить вызов в основной поток. Я предлагаю вам сигнал событие ручного сброса , чтобы отметить завершение вашего потока, и проверить статус события в обработчике WM_TIMER.

рекомендуемое чтение:

...