Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];
Внизпочему 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 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c