|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.09.2007, 18:27 | #1 |
Регистрация: 03.09.2007
Сообщений: 7
|
MsgWaitForMultipleObjects
Есть следующий код:
PHP код:
А если форма создаётся из потока: PHP код:
Может кто объяснит, что здесь происходит? и как с этим бороться? |
03.09.2007, 20:12 | #2 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
чего-то я не понял?
если приложение с формами, то зачем вообще приведённый код. У объекта Application есть свой собственный цикл обработки сообщений. по конкретнее пожалуйста |
03.09.2007, 22:11 | #3 |
Регистрация: 03.09.2007
Сообщений: 7
|
Существует циклограмма опроса некоторого прибора, которая может изменяться от случая к случаю. В соответствии с ней должна выполняться последовательность действий, например, таких, как запуск потоков для опроса прибора, их завершение и т. п. Для выдерживания временных интервалов используется WaitableTimer, а чтобы форма могла реагировать на сообщения пользователя, и была выбрана MsgWaitForMultipleObjects.
|
04.09.2007, 20:23 | #4 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
мистика какая-то....можно обрабатывать сообщение WM_CLOSE |
|
04.09.2007, 21:50 | #5 |
Регистрация: 03.09.2007
Сообщений: 7
|
WM_QUIT, WM_DESTROY, WM_CLOSE - всё едино. Вообще-то что хотел, сделал с помощью пользовательского таймера. Просто интересно что к чему.
|
05.09.2007, 20:05 | #6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
WM_QUIT, WM_DESTROY, WM_CLOSE - разные вещи
|
06.09.2007, 00:17 | #7 |
Регистрация: 03.09.2007
Сообщений: 7
|
Я хотел сказать, что ни одно из этих сообщений в очереди сообщений не появляется, пока не окончен цикл обработки MsgWaitForMultipleObjectsEx.
|
06.09.2007, 01:12 | #8 | |
Пользователь
Регистрация: 04.09.2007
Сообщений: 19
|
Цитата:
|
|
10.09.2007, 20:03 | #9 |
Регистрация: 03.09.2007
Сообщений: 7
|
Дело в том, что последовательность операций с прибором может изменяться в зависимости от конкретных условий. Отдельная операция (например, опрос информации прибора) как раз и выполняется в отдельном потоке. Для синхронизации работы таких потоков с циклограммой хотел использовать MsgWaitForMultipleObjectsEx. Если данный код выполняется в главной форме приложения, то проблем никаких нет. Но если форма не является главной, то не удаётся её закрыть до тех пор пока не сработает ожидаемое событие либо таймаут.
|