Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Вниз

Реализация механизма расписания   Найти похожие ветки 

 
DDDeN   (2007-11-08 13:18) [0]

Доброго времени суток! Необходимо реализовать механизм отслеживания определенных событий и их выполнение. Например, пользователь может создать событие, которое должно выполняться каждую среду в 18-00. К событию можно привязать определенное действие программы. Критериев выполнения может быть много, как одноразовое, каждодневное, в определенные дни, часы, минуты, секунды, так и выбранные дни и часы пользователем.


 
clickmaker ©   (2007-11-08 13:27) [1]

кроме как TTimer / SetTimer человечество ничего лучшего пока не изобрело.


 
DDDeN   (2007-11-08 14:01) [2]

Я вот тоже только такой метод знаю, это на таймер просматривать все события, и если они совпадают то выполнять определенное действие. Но если в списке заданий около 1000, думаю будет большая погрешность... Пока будет пробегать по списку уже некоторое событие может "пролететь".


 
Anatoly Podgoretsky ©   (2007-11-08 14:07) [3]

> clickmaker  (08.11.2007 13:27:01)  [1]

А системный планировщик, или штатный или программно, через АПИ


 
Dib@zol ©   (2007-11-08 14:08) [4]

А как же WaitForSingleObject/CreateWaitableTimer и иже с ними?


 
DDDeN   (2007-11-08 14:08) [5]

> Anatoly Podgoretsky ©   (08.11.07 14:07) [3]

А если необходимо взаимодействие с моей программой? Например, выгрузка таблицы во внешний текстовый файл?


 
DDDeN   (2007-11-08 14:09) [6]

> Dib@zol ©   (08.11.07 14:08) [4]

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


 
Reindeer Moss Eater ©   (2007-11-08 14:10) [7]

А если необходимо взаимодействие с моей программой? Например, выгрузка таблицы во внешний текстовый файл?

Штатный шедулер + твоя программа + параметры командной строки


 
DDDeN   (2007-11-08 14:14) [8]


> Reindeer Moss Eater ©   (08.11.07 14:10) [7]

Хорошо, как один из вариантов. Теперь так, пусть возможно 200-300 событий. Их все как-то необходимо будет идентифицировать через командную строку.


 
Сергей М. ©   (2007-11-08 14:15) [9]


> Их все как-то необходимо будет идентифицировать через командную
> строку


У тебя проблемы с разбором ком.строки, переданной твоему приложению ?


 
Dib@zol ©   (2007-11-08 14:16) [10]

> [8] DDDeN   (08.11.07 14:14)

Их все надо разделить терминирующими символами, например, | или ` и всех делов.


 
DDDeN   (2007-11-08 14:21) [11]


> Сергей М. ©   (08.11.07 14:15) [9]

В принципе нет. Достаточно забить в статический массив все события и обходить их все в цикле.


> Dib@zol ©   (08.11.07 14:16) [10]

Это если несколько событий должно быть выполнено одновременно.

Вообщем, имеем всего два варианта. Если исключить использование АПИ Шедулера, то это либо реализовывать самому при помощи Таймера, либо юзать командную строку и Шедулер.

А если на компе нет Шедулера? :)


 
Ega23 ©   (2007-11-08 14:21) [12]


> Пока будет пробегать по списку уже некоторое событие может
> "пролететь".


А ты не сравнивай время задания с текущим временем на "равно". Сравнивай на "меньше-равно".
И тогда никто не "пролетит".


 
адепт кайфа   (2007-11-08 14:24) [13]

Их все как-то необходимо будет идентифицировать через командную строку.

И без командной строки то же самое


 
Сергей М. ©   (2007-11-08 14:24) [14]


> DDDeN   (08.11.07 14:21) [11]
> В принципе нет


ну так дерзай !)


 
DDDeN   (2007-11-08 14:25) [15]


> Ega23 ©   (08.11.07 14:21) [12]

Согласен. Хотя придется добавить в структуру события флаг о том, что оно выполнилось. И соответственно отслеживать завершение процесса, который был порожден событием и снова сбрасывать флаг. Типо наподобие транзакций.


 
Сергей М. ©   (2007-11-08 14:28) [16]


> в структуру события флаг о том, что оно выполнилось


Событие не может "выполниться".
Оно может произойти или возникнуть.


 
Reindeer Moss Eater ©   (2007-11-08 14:28) [17]

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


 
DDDeN   (2007-11-08 14:30) [18]


> Reindeer Moss Eater ©   (08.11.07 14:28) [17]

Эвенты нельзя удалять. Они же могут повторится скажем на следующий день в это же время. Или через Х часов.


 
Reindeer Moss Eater ©   (2007-11-08 14:32) [19]

Тебе никто про удаление и не говорил.
Но это глупость - тупо проверять раз в секунду в течение всех суток не наступило ли время евента, если он запланирован на завтра


 
Сергей М. ©   (2007-11-08 14:33) [20]


> Эвенты нельзя удалять


зато их можно индексировать, чтобы перелопачивать только те, что реально ожидаются в означенный период времени.


 
Reindeer Moss Eater ©   (2007-11-08 14:34) [21]

Вот лично ты когда просыпаешься  1 января и смотришь список дел на день, то листаешь календарь до 31 декабря, или нет?


 
clickmaker ©   (2007-11-08 14:40) [22]


> [3] Anatoly Podgoretsky ©   (08.11.07 14:07)
> > clickmaker  (08.11.2007 13:27:01)  [1]
>
> А системный планировщик, или штатный или программно, через
> АПИ

а он что, какие-то секретные разработки НАСА использует? Тот же SetTimer()...


 
DDDeN   (2007-11-08 14:46) [23]


> Reindeer Moss Eater ©   (08.11.07 14:34) [21]

Это наверно и есть индексирование. Смотрю только эвенты на день. Ну и мельком пробегаю по всему календарю, мол, вспомнить когда у кого ДР и прочее.


 
Anatoly Podgoretsky ©   (2007-11-08 15:22) [24]


> а он что, какие-то секретные разработки НАСА использует?
>  Тот же SetTimer()...

Дело то не в таймере, а в поддержке операций планирования, в которых автор очень сильно плавает, не понимает даже элементарных основ. Так пусть пользуется тем, что уже есть, а есть очень мощное АПИ.
А SetTimer не составляет и сотых долей необходимого.


 
Anatoly Podgoretsky ©   (2007-11-08 15:23) [25]

По поводу индексирования, никакого индексирование и в принципе не требуется, нужна обычная сортированая очередь.


 
DDDeN   (2007-11-08 15:25) [26]

Спасибо всем! Буду разбираться!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.04 c
15-1200660668
Bless
2008-01-18 15:51
2008.02.17
Почему "тренЕр", но "тренИровка"


2-1201007194
Riply
2008-01-22 16:06
2008.02.17
Работа с битовыми масками.


15-1200656760
Галинка
2008-01-18 14:46
2008.02.17
Чем бы начертить блок-схему


2-1201100484
Тоник
2008-01-23 18:01
2008.02.17
stringtowidechar


15-1199947531
saNat
2008-01-10 09:45
2008.02.17
Настройка NAT (?)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский