Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Таймер без формы.   Найти похожие ветки 

 
Rifo ©   (2004-09-18 18:45) [0]

Как организовать таймер, если программа не емеет формы, или если этот код находится в DLL?


 
Defunct ©   (2004-09-18 18:54) [1]

с помощью потока.

в execute должно быть что-то типа такого:

While not Terminated do
Begin
 Sleep(10);
 CurrentTime := CurrentTime + 10;
 If CurrentTime >= Interval Then
 Begin
   If Assigned(OnTimer) Then OnTimer(Self);
   CurrentTime := 0;
 End;
End;


 
Palladin ©   (2004-09-18 18:55) [2]

SetTimer


 
Rifo ©   (2004-09-18 19:03) [3]

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


 
Defunct ©   (2004-09-18 19:06) [4]

Rifo ©   (18.09.04 19:03) [3]

Тогда:

While not Terminated do
Begin
Sleep(Interval);
If Assigned(OnTimer) Then OnTimer(Self);
End;


 
Alx2 ©   (2004-09-18 19:06) [5]

>Rifo ©   (18.09.04 19:03) [3]
Займет ресурсов не больше, чем обычн.
Кроме того, если DLL сделана на Delphi, можно все-равно использовать класс TTimer


 
Alx2 ©   (2004-09-18 19:08) [6]

А для фоновой работы, имхо, лучше TThread.
Если по будильнику - см. Waitable Timer Objects


 
Rifo ©   (2004-09-18 19:21) [7]

Alx2, приведи пожалуйста, как использовать класс TTimer в DLL.


 
Alx2 ©   (2004-09-18 19:29) [8]

>Rifo ©   (18.09.04 19:21) [7]

На стадии инициализации класса-владельца (конструктор):
 Timer1 := TTimer.Create(Nil); или self, если класс-владелец является потомком TComponent (тогда уничтожать в деструкторе Timer1 не надо)
 Timer1.OnTimer := // Событие с типом TNotifyEvent.   Timer1.Interval := ???;
 Timer1.Enabled := true;

На стадии финализации (деструктор):
Timer1.Free;


 
Rifo ©   (2004-09-18 19:34) [9]

Alx2, про TTimer более-менее ясно, а что про TThread как?


 
Alx2 ©   (2004-09-18 19:40) [10]

>Rifo ©   (18.09.04 19:34) [9]
Аналогично практически. Еще Help + особенности доступа к разделяемым ресурсам.

Код из DLL выполняется в том же адресном пространстве, что и основной поток. Но стандартные глобальные объекты Delphi-приложения (например, Application, Screen) различны. Это стоит учитывать. Для избежания головной боли можно попробовать BPL библиотеки вместо DLL. Тогда эта проблема снимется.

А в остальном - как и в приложении-хосте.


 
Rifo ©   (2004-09-18 19:53) [11]

Alx2. Чего-то я не совсем понял про TThread, но спасибо за TTimer, похоже разбрался.



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

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
1-1094656909
guest_Dmitry
2004-09-08 19:21
2004.10.03
Почему умирает иконка в трее?


1-1095161831
Volodya_
2004-09-14 15:37
2004.10.03
Thread


14-1095169635
PVOzerski
2004-09-14 17:47
2004.10.03
Что с анкетой?


1-1095192147
Саня
2004-09-15 00:02
2004.10.03
Как сушествить перевод числа?


4-1092436038
Jetus
2004-08-14 02:27
2004.10.03
Нацепить свою иконку на чужой ехе-файл