Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
15-1206971275
Zhekoff
2008-03-31 17:47
2008.05.11
Нужно написать прогу на Delphi


15-1206990222
Дмитрий С
2008-03-31 23:03
2008.05.11
Посоветуйте книги.


2-1208237932
John_Korsh
2008-04-15 09:38
2008.05.11
Доступ к портам под XP.


2-1207832097
Polar
2008-04-10 16:54
2008.05.11
Направление текста в QRLabel


2-1208242787
Zloy_Funtik
2008-04-15 10:59
2008.05.11
Сохр. данных нескольких мемо полей относительно одного параметра




   Наверх