Вниз
Скачать: 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 вся ветка

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



Память: 0.47 MB
Время: 0.025 c
6-1090844845
Layner
2004-07-26 16:27
2004.10.03
Как послать вместе с посылкой POST строку Referrer?


1-1095352041
panov
2004-09-16 20:27
2004.10.03
Ошибка в потоке


1-1095413551
Чайник
2004-09-17 13:32
2004.10.03
и снова цвет...


1-1095573302
Navi
2004-09-19 09:55
2004.10.03
Правильное отображение повернутого текста


1-1095239652
Чайник
2004-09-15 13:14
2004.10.03
Случайный цвет




   Наверх