![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятное поведение Application.ProcessMessages
voe © (2008-04-13 00:27:00)В цикле открываю несколько страниц. Для каждой страницы делаю так:
var
FlagsOlevariant;
Flags:='DLCTL_PRAGMA_NO_CACHE';
...
Unit1.FormMain.WebBrowser1.Navigate('www.ya.ru',Flags);
while not Unit1.FormMain.WebBrowser1.Busy do Application.ProcessMessages;
while Unit1.FormMain.WebBrowser1.Busy do Application.ProcessMessages;
...
При находжении нужной страницы выхожу из цикла и включаю таймер.
При завершении таймера заново выполняю вышеприведенный код.
Но при наступлении :
while not Unit1.FormMain.WebBrowser1.Busy do Application.ProcessMessages;
Происходит переход в начало события и программа начинает выполнятся заново! и так бесконечно!
Вчем может быть гемарой?
voe (2008-04-13 14:26:00) [1]Большое спасибо sniknik и Palladin.
все как вы сказали я действительно не отключал таймер которым повторно запускал обработку!
Вот почему происходило странный эффект возрата в начало действия!
Всем еще раз спасибо!
sniknik (2008-04-13 11:32:00) [2]ProcessMessages это выборка и обработка событий из очереди основного потока, сработка таймера это тоже событие... пока ты там крутишь цикл, наступает время очередной сработки таймера, т.е. событие, обработкой которых ProcessMessages и занимается. рекурсия получается... вполне корректно. что написал то и получи.
Palladin (2008-04-13 11:30:00) [3]тебе кто сказал, что Application.ProcessMessages некорретно работает? ты просто не до конца понимаешь, что это такое и что такое TTimer. это раз, два мне не видны условия отработки вышеприведенного кода. ты можешь гарантированно сказать что при входе в цикл таймер отключен? и как понять "при завершении таймера"? как ты его отслеживаешь? пока я вижу только одну проблему. и кстати неясно что в самом событии таймера написано. короче: как следишь за таймером?
voe (2008-04-13 10:58:00) [4]Неотключение таймера может так катастрофично отразится на работе Application.ProcessMessages ?
Все остальное же работает!
Поясни если нетрудно.
Palladin (2008-04-13 10:40:00) [5]сам ты некорректный. даю 100% что ты его не отключаешь на время работы его же события.
voe (2008-04-13 10:31:00) [6]
> Johnmen © (13.04.08 02:08) [2]
>
> > while not Unit1.FormMain.WebBrowser1.Busy
>
> Прикольно. Бесконечный цикл...:))
Бесконечного цикла нет! Обрати внимание на предыдущию строку кода!
> Anatoly Podgoretsky © (13.04.08 00:44) [1]
> > voe (13.04.2008 00:27:00) [0]
>
> Таймер не наблюдается
Таймер намного ниже. Да и какое отношение он может имет к некоректной работе Application.ProcessMessages ?
Johnmen (2008-04-13 02:08:00) [7]
> while not Unit1.FormMain.WebBrowser1.Busy
Прикольно. Бесконечный цикл...:))
Anatoly Podgoretsky (2008-04-13 00:44:00) [8]> voe (13.04.2008 00:27:00) [0]
Таймер не наблюдается