-
> Резюме: или делать в консоли второй поток с Waitable Timer
Я правильно понимаю, что имеется ввиду это: procedure Wait(lNumberOfSeconds : Longint);
const
_SECOND = 10000000;
var
lBusy : LongInt;
hTimer : LongInt;
liDueTime : LARGE_INTEGER;
begin
hTimer := CreateWaitableTimer(nil, True, 'WaitableTimer');
if hTimer = 0 then
Exit;
liDueTime.QuadPart := -10000000 * lNumberOfSeconds;
SetWaitableTimer(hTimer, TLargeInteger(liDueTime), 0, nil, nil, False);
repeat
lBusy := MsgWaitForMultipleObjects(1, hTimer, False,
INFINITE, QS_ALLINPUT);
Application.ProcessMessages;
Until lBusy = WAIT_OBJECT_0;
CloseHandle(hTimer);
End;
begin
while True do
begin
writeln('Output');
wait(10);
end;
end. ?
-
> mr. Eof
А что в конечном результате ты хочешь сделать? А т не очень понятны все эти пляски с таймерами и задержками.
-
> А что в конечном результате ты хочешь сделать? А т не очень > понятны все эти пляски с таймерами и задержками.
DVM, в данном случае это не принципиально. Руководство поставило задачу модифицировать существующее приложение, и одним из требований является постоянная работа сервиса.. Я сделал это используя sleep и на 1й взгляд все норм работает. Однако после сообщений Leonid Troyanovsky, я сильно засомневался...
-
> постоянная работа сервиса
А до постановки задачи она, надо понимать, непостоянная ? И как же эта "непостоянность" проявляется ?
> lBusy := MsgWaitForMultipleObjects(1, hTimer, False, > INFINITE, QS_ALLINPUT); > Application.ProcessMessages;
Какой еще Application ? У тебя же консольное приложение, судя по приведенному коду, не использует VCL ?..
-
> mr. Eof (11.03.08 23:38) [20]
> Я правильно понимаю, что имеется ввиду это:
Только не это :)
Или два потока в консоли, или GUI приложение (да хотя бы и сервис) с окном верхнего уровня.
-- Regards, LVT.
-
> и одним из требований является постоянная работа сервиса. > .
Так сервис или консольное приложение? Пока что сервисами в примерах выше и не пахнет.
-
Сервис. Результат - dll. В консоли я тестирую, так как похоже. По поводу Application.ProcessMessages - да, не подойдет. Я не заметил сразу :)
-
Да, до этого приложение было консольным и запускалось по требованию пользователя, вручную.
-
> В консоли я тестирую, так как похоже.
А что мешает тестировать в сервисе?
P.S. А вот использовать разные ники в одной ветке некошерно. Можешь огрести за нарушение правил форума.
|