Таймер в Service

Тема в разделе "Delphi - Система", создана пользователем SNike, 29 янв 2007.

  1. SNike

    SNike Гость

    Тебуется альтернатива компоненту для TTimer. Подскажите что лучше использовать. Приложение работает как служба, в котором создается некоторое количество потоков. В этих потоках и нужно организовывать задержки. Sleep тоже не подходит, т.к. "замораживает" поток. Посоветуйте альтернативу...
     
  2. Barmutik

    Barmutik Гость

    А почему не подходит Sleep? Что конкретно надо сделать?
     
  3. SNike

    SNike Гость

    Sleep, похоже, полностью замораживает поток, и пока он сам не проснется - его не разбудить.
    Служба создает 10-15 потоков, в каждом потоке с некоторой периодичностью, пусть скажем раз в 30 секунд, необходимо выполнять некоторые действия. Тогда можно оформить это так:
    Код (Text):
    Repeat
    DoWork;
    Sleep(30*1000);
    Until Terminated
    Однако, если попытаться остановить службу, то необходимо остановить и уничтожить все созданные потоки, а Sleep эти потоки "заморозит" и, пока не проснется, поток не завершит свою работу. Т.е. служба будет останавливаться довольно долго, и может возникнуть ситуация с сообщением что служба не ответила за определенный отрезок времени
     
  4. zubr

    zubr Гость

    Так в чем проблема, проверяй поток чаще (к примеру через 30 мс):
    Код (Text):
    var
    counter:Integer;

    counter:=GetTickCount;
    Repeat
    DoWork;
    While GetTickCount-counter<30000 do
    begin
    If Terminated then
    exit;
    Sleep(30);
    end;
    counter:=GetTickCount;
    Until Terminated
     
  5. SNike

    SNike Гость

    Да, точно! Просто и эффективно.
    Я уже было подумывал над WaitForSingleObject, WaitableTimer, но они создают дополнительные потоки чего мне не особо хотелось бы, т.к., если не ошибаюсь, не рекомендуется создавать более 15 - 16 потоков.

    И, кстати, еще вопрос по теме: сильно ли загружает Sleep процессор? И что более предпочтительней для потоков в службе - Sleep, WaitForSingleObject, WaitableTimer или еще какие-либо способы?
     
Загрузка...
Похожие Темы - Таймер Service
  1. Shouldercannon
    Ответов:
    0
    Просмотров:
    638
  2. Aris
    Ответов:
    0
    Просмотров:
    996
  3. масенький
    Ответов:
    0
    Просмотров:
    1.115
  4. shilovec5377
    Ответов:
    0
    Просмотров:
    1.572
  5. shilovec5377
    Ответов:
    0
    Просмотров:
    1.200

Поделиться этой страницей