![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать таймер в потоке
Piero © (2005-12-06 10:33:00)Как сделать таймер в TTheard
Piero (2005-12-06 11:32:00) [21]и почему оконных сообщений, я хочу обойтись одним потоком
Piero (2005-12-06 11:31:00) [22]Что такое цикл ожидания/выборки/диспетчеризации оконных сообщений,
и как его делать
я могу сделать так:
while ... do
begin
sleep(1000);
...
end;
Ну здесь таймер уже, действетельно не нужен
Digitman (2005-12-06 11:27:00) [23]
> Reindeer Moss Eater © (06.12.05 11:24) [13]
на вкус и цвет, как говорится) .. ну сам знаешь
мало ли зачем он автору ! ну вот нужен ему таймер - что ж тут плохого ?
Reindeer Moss Eater (2005-12-06 11:24:00) [24]А если будет какой-то цикл, то таймер-то становится не нужен вообще.
Digitman (2005-12-06 11:23:00) [25]
> значит ты не дописал пример?
я ответил в точности на твой вопрос, так как он был тобой поставлен
> нужно перехватывать wm_timer
не нужно ничего "перехватывать" - нужен обычный цикл ожидания/выборки/диспетчеризации оконных сообщений
Piero (2005-12-06 11:21:00) [26]значит ты не дописал пример?
нужно перехватывать wm_timer
Digitman (2005-12-06 11:12:00) [27]
> TimerEventHandler - не срабатывает
он и с не-nil не будет "срабатывать", потому что цикл диспетчеризации сообщений нужен
Digitman (2005-12-06 11:10:00) [28]
> с nil - не работает
ой врешь)
Piero (2005-12-06 11:10:00) [29]Таймер создается
FTimer := TTimer.Create(nil);
FTimer.Interval:=100;
Ftimer.Enabled:=true;
FTimer.OnTimer := TimerEventHandler;
но TimerEventHandler - не срабатывает
Digitman (2005-12-06 11:08:00) [30]
> в форме я бы передал nil, а в потоке?
а какая принципиальная разница ?
владельцем компонента м.б. либо другой компонент либо nil, если владелец не назначается ... а уж где конструктор компонента вызывается - то ли в коде формы то ли еще где-то - строго фиолетово
Piero (2005-12-06 11:06:00) [31]Не посмотрел последний пост, но с nil - не работает
Piero (2005-12-06 11:05:00) [32]Собственно в этом и была проблемма, в форме я бы передал nil, а в потоке?
Digitman (2005-12-06 11:04:00) [33]да что угодно)... хоть тот же nil ..
Piero (2005-12-06 11:01:00) [34]А в качестве Owner, что я должен передовать в TTimer.Create(..)?
Digitman (2005-12-06 10:40:00) [35]например, так:
TMyThread = class(TThread)
..
FTimer: Timer;
..
procedure TimerEventHandler(Sender: TObject);
procedure Execute; override;
..
end;
..
procedure TMyThread.TimerEventHandler(Sender: TObject);
begin
.. do something here ...
end;
procedure TMyThread.Execute;
begin
..
FTimer := TTimer.Create(..);
try
FTimer.OnTimer := TimerEventHandler;
..
finally
FTimer.Free;
end;
..
end;
Reindeer Moss Eater (2005-12-06 10:38:00) [36]Что значит сделать?
Он уже сделан.
Класс TTimer