Текущий архив: 2008.05.11;
Скачать: CL | DM;
Вниз
Непонятное поведение Application.ProcessMessages Найти похожие ветки
← →
voe (2008-04-13 00:27) [0]В цикле открываю несколько страниц. Для каждой страницы делаю так:
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;
Происходит переход в начало события и программа начинает выполнятся заново! и так бесконечно!
Вчем может быть гемарой?
← →
Anatoly Podgoretsky © (2008-04-13 00:44) [1]> voe (13.04.2008 00:27:00) [0]
Таймер не наблюдается
← →
Johnmen © (2008-04-13 02:08) [2]
> while not Unit1.FormMain.WebBrowser1.Busy
Прикольно. Бесконечный цикл...:))
← →
voe (2008-04-13 10:31) [3]
> 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 ?
← →
Palladin © (2008-04-13 10:40) [4]сам ты некорректный. даю 100% что ты его не отключаешь на время работы его же события.
← →
voe (2008-04-13 10:58) [5]Неотключение таймера может так катастрофично отразится на работе Application.ProcessMessages ?
Все остальное же работает!
Поясни если нетрудно.
← →
Palladin © (2008-04-13 11:30) [6]тебе кто сказал, что Application.ProcessMessages некорретно работает? ты просто не до конца понимаешь, что это такое и что такое TTimer. это раз, два мне не видны условия отработки вышеприведенного кода. ты можешь гарантированно сказать что при входе в цикл таймер отключен? и как понять "при завершении таймера"? как ты его отслеживаешь? пока я вижу только одну проблему. и кстати неясно что в самом событии таймера написано. короче: как следишь за таймером?
← →
sniknik © (2008-04-13 11:32) [7]ProcessMessages это выборка и обработка событий из очереди основного потока, сработка таймера это тоже событие... пока ты там крутишь цикл, наступает время очередной сработки таймера, т.е. событие, обработкой которых ProcessMessages и занимается. рекурсия получается... вполне корректно. что написал то и получи.
← →
voe (2008-04-13 14:26) [8]Большое спасибо sniknik и Palladin.
все как вы сказали я действительно не отключал таймер которым повторно запускал обработку!
Вот почему происходило странный эффект возрата в начало действия!
Всем еще раз спасибо!
Страницы: 1 вся ветка
Текущий архив: 2008.05.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.006 c