Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.02 c
15-1206709064
31512
2008-03-28 15:57
2008.05.11
До чего увлекательно слушать песни от Microsoft


2-1207831691
dumka
2008-04-10 16:48
2008.05.11
Запросы


3-1196861574
Леонид
2007-12-05 16:32
2008.05.11
Delphi и MS SQL


2-1208157567
Костик
2008-04-14 11:19
2008.05.11
Как экзэшнику скопировать себя?....


2-1208167234
Black_Tomcat
2008-04-14 14:00
2008.05.11
OleContainer, Excel, WebBrowser.