Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Организация таймера в сервисе

335
26 октября 2005 года
enola
379 / / 25.01.2005
Добрый день!
Подскажите как решить такую задачу:
необходимо через определенный промежуток времени получать почту, как в outlook'е скажем. Мое приложение это сервис т.е. консольное приложение. Задача сводится к тому, как организовать этот "промежуток" - таймер, получать почту я могу.
2.3K
26 октября 2005 года
ART-CODE
134 / / 15.11.2004
Что-то мешает воспользоваться стандартным планировщиком "Scheduled Tasks" ?
Есть время писать свой планировщик ?

Почему-бы не воспользоваться "schtasks.exe"
см. параметры коммандной строки - ты можешь из своей программы
создавать любые задачи, просматривать результат выполнения,
или отменять задания.

P.S.
Своего программного кода нужно писать настолько мало, насколько
это вообще возможно, но качественно.

В свое время (3 года назад) я уже решал Именно Эту задачу.
В моей программе сначала то-же был планировщик, и программа
постоянно висела в оперативной памяти 90% времени ничего не
делая, а только ожидая своего времени...
Затем я от этой практики отказался - перевел программу в режим работы
из коммандной строки - создал *.bat файл,
который запускает программу по расписанию, установленному в "Scheduled Tasks"
и вот уже несколько лет работает без проблем. За это время я потратил много сил
и времени на полезную доработку - защита от СПАМА, хитрые методы сортировки,
перекодировка всей почты в единый формат, ведение почтовой базы данных и др...
488
26 октября 2005 года
Mоngооsе
465 / / 01.04.2005
Есть такой объект как таймер ожидания, с которой можно работать как с объектом Event, ф-иями WaitForSingleObject/WaitForMultipleObject.

CreateWaitableTimer/SetWaitableTimer (Win32API)
2.3K
26 октября 2005 года
ART-CODE
134 / / 15.11.2004
Цитата:
Originally posted by Mоngооsе
Есть такой объект как таймер ожидания, с которой можно работать как с объектом Event, CreateWaitableTimer/SetWaitableTimer (Win32API)


Есть -то он есть , но в этой задаче он он не нужен.
Его имеет смысл использовать при ожидании новых данных... (слежение за файловыми событиями, чтение данных из сокета и др..)
Здесь ожидается только время, а время может потребовать ОЧЕНЬ сложного алгоритма ожидания - например только по четным дням, если они не суббота и воскресенье , с 10 до 18 с периодичностью 15 минут., и при условии, что комп. в это время не питается от аккумуляторных батарей и разбудить компьютер для выполнения задания.

335
26 октября 2005 года
enola
379 / / 25.01.2005
Цитата:
Originally posted by ART-CODE
Что-то мешает воспользоваться стандартным планировщиком "Scheduled Tasks" ?
Есть время писать свой планировщик ?

Почему-бы не воспользоваться "schtasks.exe"
см. параметры коммандной строки - ты можешь из своей программы
создавать любые задачи, просматривать результат выполнения,
или отменять задания.

P.S.
Своего программного кода нужно писать настолько мало, насколько
это вообще возможно, но качественно.

В свое время (3 года назад) я уже решал Именно Эту задачу.
В моей программе сначала то-же был планировщик, и программа
постоянно висела в оперативной памяти 90% времени ничего не
делая, а только ожидая своего времени...
Затем я от этой практики отказался - перевел программу в режим работы
из коммандной строки - создал *.bat файл,
который запускает программу по расписанию, установленному в "Scheduled Tasks"
и вот уже несколько лет работает без проблем. За это время я потратил много сил
и времени на полезную доработку - защита от СПАМА, хитрые методы сортировки,
перекодировка всей почты в единый формат, ведение почтовой базы данных и др...



глупость!
я же написал, что мне нужно сделать при чем тут сторонний софт, это не серьезно! Я не делаю почтового клиента!

Цитата:

Есть такой объект как таймер ожидания, с которой можно работать как с объектом Event, ф-иями WaitForSingleObject/WaitForMultipleObject.

CreateWaitableTimer/SetWaitableTimer (Win32API)



спасибо, буду рыть в этом направлении.

2.3K
26 октября 2005 года
ART-CODE
134 / / 15.11.2004
Цитата:
Originally posted by enola
глупость!
я же написал, что мне нужно сделать при чем тут сторонний софт, это не серьезно! Я не делаю почтового клиента!



спасибо, буду рыть в этом направлении.


Я пытался показать где лежат грабли, но некоторые ...

Если ты не делаешь почтового КЛИЕНТА . (хотя получение почты - это задача именно клиента -если ты не в курсе :) )
Значит ты делаешь почтовый сервер.
ПОСМОТРИ на реализации готовых почтовых серверов
- ты увидишь, что для каждой тривиальной задачи создатся свой отдельный модуль, кот. запускается только когда он требуется.
ОБРАТИ ВНИМАНИЕ , что если какой- то модуль запускается на постоянную работу, то это ТОЛЬКО для прослушивания сокета и приема подключений клиентов и БОЛЬШЕ НИЧЕГО.
СМОТРИ на реализацию сервисов в Linux
- сочетание инструментов коммандной строки, графических интерфейсов к ним , планировщика "cron", и слушающих порты сервисов - например "inetd".
СМОТРИ на NortonAntivirus - он планирует свои обновления и проверку компа через "Scheduled Tasks"
Что , его разрабатывали ребята, которые не занают про
Event, CreateWaitableTimer/SetWaitableTimer
или они глупее , чем "enola" ?

Мне попадались почтовые серверы, которые имели свои жалкие потуги ведения собственного планировщика и собственной службы управления RAS Dial - подключение к интернет по телефонной линии.
Чесное слово, лучше бы они не морочили людям голову и переложили эти задачи на стандартные службы, которые действительно умеют это делать.

335
26 октября 2005 года
enola
379 / / 25.01.2005
Цитата:
Я пытался показать где лежат грабли, но некоторые ...



не хотел обидеть, сорри если что.

Цитата:
СМОТРИ на NortonAntivirus - он планирует свои обновления и проверку компа через "Scheduled Tasks" Что, его разрабатывали ребята, которые не занают про Event, СreateWaitableTimer/SetWaitableTimer
или они глупее, чем "enola"?



понятно, что делали знающие люди и я никак не хотел сказать, что умнее их, но поверь мне, если это Symantec, то это не значит, что я при разработке софта должен ориентироваться на какую-нибудь команду, даже если использую этой фирмы антивирус :)!

Цитата:
ПОСМОТРИ на реализации готовых почтовых серверов - ты увидишь, что для каждой тривиальной задачи создатся свой отдельный модуль, кот. запускается только когда он требуется.



вот именно так у меня и будет реализовано, но таймер все равно нужен будет!!! У меня для этого и написан отдельный модуль :).

2.3K
26 октября 2005 года
ART-CODE
134 / / 15.11.2004
Я тоже приношу извинения, если что... :)
Я, наверно, не все правильно понял по поводу твоей реализации...
Если в самом деле есть необходимость/желание делать свой планировщик,
то тема уже исчерпана ответом " Mоngооsе "
Удачи.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог