Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизТаймер без формы. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c