Главная страница
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.024 c
14-1095089567
Knight
2004-09-13 19:32
2004.10.03
А что такое Альтернативный ввод текста и где его найти?


6-1091079732
snake1977
2004-07-29 09:42
2004.10.03
Запрос получения страницы


14-1095414448
euru
2004-09-17 13:47
2004.10.03
Тип Variant


1-1095678696
Nata
2004-09-20 15:11
2004.10.03
Форма


3-1094107762
strelok-47
2004-09-02 10:49
2004.10.03
отлов момента ввода инфы в поле