Tertium |
Отправлено: 03.11.2006, 13:43 |
|
Машинист паровоза
Группа: Почетный участник
Сообщений: 192
|
народ, такой вопрос: у меня запускается операция занимающая длит. время, в потоке интерфейса, перед этим делается визибл тру окошку на котором прогресс. операция представляет собой цикл, в котором задается прогрессу валуе и лабелу на окне капшн, и вызываются апдейты иногда окна и лабела.
так вот — запуская из среды получаю нормальное висящее приложение, периодически обновляется прогресс и надпись, т.е. все ОК.
Но без среды, просто запуская дебагный экзешник — такая странная вещь — можно подвигать окно, в то время как поток интерфейса по идее висит !!! при этом уже не обновляется лабел и прогресс, мало того потом и Visible = false действует не сразу на окно, оно прячется через минуту или около того. Такое впечатление, что эти сообщения мыши рвут очередь сообщений вцл. Кто нибудь может прокомментировать?
|
|
Doga |
Отправлено: 04.11.2006, 14:52 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
Что значит
QUOTE |
поток интерфейса по идее висит
|
?
Это отдельный поток в приложении? Он в это время Suspended или всё-таки работает но ничего не делает?
Application->ProcessMessages() пробовали?
|
|
Tertium |
Отправлено: 08.11.2006, 22:08 |
|
Машинист паровоза
Группа: Почетный участник
Сообщений: 192
|
висит — значит занят глухим циклом, суспендед — это не висит, это приостановлен
за Application->ProcessMessages() спасибо, посмотрю
НО: вопрос не в том, что висит. Висит и висит, это нормально в данном случает, но непонятно, почему когда без среды запускаю и посреди этого висения сдвигаю окно мышью — он резко прерывает цикл, окно сдвигать дает и после этого все обращения к окну безрезультатны (Visible = false и типа того)
|
|
Doga |
Отправлено: 09.11.2006, 13:07 |
|
Мастер участка
Группа: Участник
Сообщений: 575
|
А Synchronize исползуется для обновления окна?
Может быть, у потока слишком большой приоритет...
|
|
olegenty |
Отправлено: 09.11.2006, 14:46 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
это такая фича XP, бороться с ней бесполезно. ещё в Win2000 всё было в порядке, а в XP при зависшей очереди почему-то окно доступно для движения.
|
|