Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизПроблема с таймером Найти похожие ветки
← →
Ботвин Дмитрий (2005-10-07 13:45) [0]Всем привет! У меня такая проблема: с помощью
mmResult:=timeSetEvent(5000, 0, @TimeCallBack, 0, 0) создаю таймер,
обработку события делаю так:
procedure TimeCallBack(TimerID, Msg: Uint; dwUser, dw1, dw2: DWORD); stdcall;
begin
timeKillEvent(mmResult);
Form2.BeginPlay;
end;
На процедуре BeginPlay приложение виснет. Если заменить на
обычный TTimer и в его обработчик событий вставить Form2.BeginPlay - всё работает.
Подскажите в чём проблема?
← →
Digitman © (2005-10-07 14:00) [1]и что же у тебя творится в теле BeginPlay() ?
← →
Ботвин Дмитрий (2005-10-07 14:32) [2]Digitman © (07.10.05 14:00) [1]
Я думаю, что дело не вней, т.к. с обычным таймером всё работает.
Пробывал звменить таймер на обычныу задержку Sleep, после чего вызывать
Form2.BeginPlay - тоже всё нормально. Может я что-то не правильно делаю
в TimeCallBack?
← →
Digitman © (2005-10-07 15:05) [3]
> Ботвин Дмитрий (07.10.05 14:32) [2]
"гениальная" мысль воспользоваться встр.отладчиком в голову не приходила ?
← →
Ботвин Дмитрий (2005-10-07 15:09) [4]> Ботвин Дмитрий (07.10.05 14:32) [2]
Приходила. Даже пробывал на досуге. Исключений при этом не возникает. Просто "виснет" и всё...
← →
Digitman © (2005-10-07 15:13) [5]
> Просто "виснет" и всё
"просто" - это только у кроликов, в момент всем известного процесса)
"Вис" же обычно возникает при вызове по F8 той или иной п/программы ..
Мысль нажать F7 вместо F8 не приходила ?
← →
Ботвин Дмитрий (2005-10-07 15:34) [6]Интересный факт обноружился:
В процедуре TimeCallBack прога "виснет" при входе в любую процедуру
procedure TimeCallBack(TimerID, Msg: Uint; dwUser, dw1, dw2: DWORD); stdcall;
begin
timeKillEvent(mmResult);
//После этого и "висет" при входе в любую процедуру
...
end;
Может есть какой-то ньюанс у кулбэковской процедуры?
← →
Leonid Troyanovsky © (2005-10-07 15:52) [7]
> Ботвин Дмитрий (07.10.05 15:34) [6]
> Может есть какой-то ньюанс у кулбэковской процедуры?
У оной функции, если мне не изменяет склероз, был даже список
рекомендованных для использования функций, за пределы которого
выбираться можно лишь с низкими поклонами.
--
Regards, LVT.
← →
Digitman © (2005-10-07 15:57) [8]
> Может есть какой-то ньюанс у кулбэковской процедуры?
конечно есть !
читаем справку :
The multimedia timer runs in its own thread.
В отличие от других таймерных объектов системы ЭТОТ таймерный объект для обработки своих событий создает новый кодовый поток, в коем собственно и вызывает ту ф-цию, которую ты указал при вызове timeSetEvent()
> кулбэковской
эт что-то новенькое)..
callback - это гораздо ближе по звучанию "колбэк" (обратный вызов), нежели к "кулбэк" (нечто похожее на "свежий вызов")
> "висет" при входе в любую процедуру
ой не ври !)
F7 ты не давил ? не давил) ... не сподобился)
а если бы давил, то убедился бы в тгом, что ВХОД в ЛЮБУЮ процедуру осуществляется совершенно нормально.
← →
Digitman © (2005-10-07 15:59) [9]
> ньюанс
эт тоже наводит на мысль о чем-то новеньком, типа "нового ануса"))))
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.044 c