Главная страница
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.022 c
15-1206515574
usr
2008-03-26 10:12
2008.05.11
MS SQL Server 2000


2-1207804307
Chorniy
2008-04-10 09:11
2008.05.11
ReadProcessMemory читает всегда с одного адреса... где-то ошибка?


15-1206529654
Галинка
2008-03-26 14:07
2008.05.11
Можно ли как то в моцилле предопределить размер шрифта?


2-1208175871
assassin8899
2008-04-14 16:24
2008.05.11
AQL запрос


2-1208200976
Boris
2008-04-14 23:22
2008.05.11
Бинарный файл