![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание расписания в программе (планировщика) [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 не помогает ?