Вниз
Скачать: CL | DM;

почему OnIdle перестает вызываться   Найти похожие ветки 

← →
SkyN   (2009-04-07 14:45) [0]

почему OnIdle перестает вызываться, если не трогаю приложение некоторое время?


← →
SkyN   (2009-04-07 14:50) [1]

добавлю, что на форме таймер, который раз в секунду исправно пишет в лог файл.
процедура OnIdle  тоже пишет какое то время. дальше, если не трогать приложение, то таймер продолжает писать, а вот от OnIdle  сообщений уже нет.


← →
{RASkov} ©   (2009-04-07 15:11) [2]

> [0] SkyN   (07.04.09 14:45)

А с var Done: Boolean у тебя что?


← →
Amoeba ©   (2009-04-07 15:22) [3]

Не надо запихивать запись лога в OnIdle. Это событие не для этого существует.


← →
SkyN   (2009-04-07 16:08) [4]

to {RASkov}:
Done по логике программы могу возвращать разную. в логе информации о том что возвращаю сейчас нет.
to Amoeba:
т.е. проблема в записи лог файла? ещё какие ограничения есть? )))


← →
Сергей М. ©   (2009-04-07 16:22) [5]


> дальше, если не трогать приложение, то ..от OnIdle  сообщений уже нет


Потому что событие Idle не происходит.
Соответственно процедура OnIdle не вызывается.


← →
Anatoly Podgoretsky ©   (2009-04-07 16:26) [6]

Так откуда оно возникнет, если "не трогать приложение"


← →
SkyN   (2009-04-07 17:42) [7]

от таймера
таймер исправно, раз в секунду, срабатывает


← →
Игорь Шевченко ©   (2009-04-07 17:46) [8]


> от таймера


от таймера оно не возникнет


← →
{RASkov} ©   (2009-04-07 20:06) [9]

> [4] SkyN   (07.04.09 16:08)

Вообще верное замечание [3] по поводу записи лога в данном событии.... Оно точно не для этого...

А вот Done нужно False ставить, чтоб данное событие не переставало генерироваться....


← →
SkyN   (2009-04-08 15:44) [10]

мне не надо чтобы событие было в цикле, т.е. Done я регулярно ставлю в True. Но я хочу, чтобы каждый раз, когда пользователь поменял настройки, произошло событие от таймера, пришли данные по DDE, моё приложение отреагировало на любое событие windows, в любом из этих случаев последним действием (т.е. очередь событий пуста) вызвался бы мой код.

но если пришло много данных по DDE, то мой код должен вызваться только один раз.


← →
Sapersky   (2009-04-08 16:16) [11]

ИМХО, проще и надёжнее выставлять какой-то флаг и проверять его в таймере.
OnIdle с Done = True предназначено, как мне кажется, в основном для определения момента завершения пользовательского ввода. При этом можно выполнить некие "отложенные" второстепенные действия, которые нежелательно вешать на события контролов во избежание заметных тормозов (например, действие продолжительностью 100-200 мс в OnMouseMove). Ещё можно (и даже лучше) вынести эти действия в отдельный поток, но это требует синхронизации; OnIdle в этом смысле проще.


← →
Сергей М. ©   (2009-04-08 23:00) [12]


> хочу, чтобы каждый раз, когда пользователь поменял настройки,
>  произошло событие от таймера,


Можно подумать, что какой-то там бедняга-пользователь, "меняющий настройки", обязан "по твоему хотенью" знать о каком-то там "таймере"..


← →
Германн ©   (2009-04-09 00:23) [13]


> Сергей М. ©   (08.04.09 23:00) [12]
>
>
> > хочу, чтобы каждый раз, когда пользователь поменял настройки,
>
> >  произошло событие от таймера,
>
>
> Можно подумать, что какой-то там бедняга-пользователь, "меняющий
> настройки", обязан "по твоему хотенью" знать о каком-то
> там "таймере"..
>

Неверно прочитал. Там не было никакой причинно-следственной связи между сменой настроек и событиями таймера.

P.S.
Но сама задача мне плохо ясна.



Страницы: 1 вся ветка

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



Память: 0.48 MB
Время: 0.007 c
15-1237530743
xyzzz
2009-03-20 09:32
2009.05.24
1С данные за предыдущие месяцы


2-1239140033
istok
2009-04-08 01:33
2009.05.24
D2009: PAnsiChar to AnsiString


15-1236782150
Urk
2009-03-11 17:35
2009.05.24
Когда выйдет Update 3 для Delphi 2009?


2-1239014028
Roman88
2009-04-06 14:33
2009.05.24
Определить наличие процедуры


2-1238152748
D@nger
2009-03-27 14:19
2009.05.24
Отображение иконки ассоциированного файла




   Наверх