Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание расписания в программе (планировщика) [D5, Win2k]


NikeOLD ©   (2004-01-12 12:41:00) 

День добрый!
Появилась задача. Необходимо, чтобы программа начинала и прекращала выполнять определенные действия в определенный момент времени. Например, прекратила мониторинг в 19.00 и запустила его в 7.30 (время настраивается пользователем).
Обычный таймер не подходит. В MSDN описаны функции для waitable timer, но они получают в качестве интервала значение в наносекундах. Придется делать пересчет времения от текущего момента до заданного.
Где-то там же в MSDN видел интерфейсы, судя по заголовкам, способствующие созданию таких таймеров.
Вопрос, если кто сталкивался с подобным, пожалуйста подскажите наиболее удобный способ реализации, которая не грузила бы процессор.
P.S. Пока идет ожидание необходимо выполнять текущую работу, т.е. требуется многопоточность.


NikeOLD   (2004-01-12 14:00:00) [1]


> На платформе НТ есть еще и WaitableTimer

Вот про них-то и хотелось бы услышать подробнее.
Ладно сейчас будем разбираться с MSDN.
Всем спасибо за внимание.


Anatoly Podgoretsky   (2004-01-12 13:45:00) [2]

На платформе НТ есть еще и WaitableTimer


Anatoly Podgoretsky   (2004-01-12 13:44:00) [3]

NikeOLD   (12.01.04 13:31) [7]
Чем не удобен?
Зачем куча таймеров, когда всегда хватает одного и списка задач.


GLFox   (2004-01-12 13:42:00) [4]

Попробуй сделать нитку (thread), а в ней GetTickCount...
При запуске один GetTickCount, а в процессе работы (через какие-нибудь Sleep-интервалы) проверяй разницу...


BiN   (2004-01-12 13:38:00) [5]

если ты хочешь усыпить поток на определенное время, то и используй простой слип


NikeOLD   (2004-01-12 13:31:00) [6]


> разрешите спросить, почему?

Интервал в миллисекундах на больших промежутках времени, например 12-18 часов малоудобен.
В системе может присутствовать ограниченное количество таймеров. У меня в программе их и без того предостаточно. Да и таймеры, работающие в собственном потоке более эффективны (не отправляют лишние события окну).


BiN   (2004-01-12 13:20:00) [7]

NikeOLD   (12.01.04 12:41) Обычный таймер не подходит.
разрешите спросить, почему?


NikeOLD   (2004-01-12 13:16:00) [8]

Спасибо Анатолий.

Господа выше вероятно не поняли или я плохо выразился. Мне не нужно тормозить программу, мне нужно тормознуть определенную задачу (функцию, поток, если желаете) программы, сама она должна оставаться в рабочем состоянии, выполняя другие задачи.


Anatoly Podgoretsky   (2004-01-12 13:09:00) [9]

В Windows есть встроеный планировщик и развитое АПИ для его управления, поиск в MSDN по слову Scheduler


Kerk   (2004-01-12 13:04:00) [10]


> NikeOLD   (12.01.04 13:03) [2]

напиши в командной строке "at /?" (без кавычек)
будет тебе подробнее


NikeOLD   (2004-01-12 13:03:00) [11]

Немного подробнее можно?


Игорь Шевченко   (2004-01-12 12:59:00) [12]

Команда at не помогает ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо