Создание планировщика задач - PullRequest
0 голосов
/ 28 июня 2011

У меня есть требование планировать повторяющиеся задачи. Мое приложение находится в MFC. Например, мне может понадобиться отправить файл в определенное место в поле «С даты», «До даты», «Частота», «Время начала», «Время окончания». Я подумал о том, чтобы иметь список и добавить эти параметры там и создать таймер, который проходит каждую секунду. Где я могу проверить список условий и вызвать передачу файла. Но проблема в том, что если список огромен, я не смогу это сделать. Есть ли другой способ добиться этого?

1 Ответ

0 голосов
/ 28 июня 2011

Создайте приоритетную очередь запланированных событий, и для каждого «расписания» заполните очередь только СЛЕДУЮЩИМ событием для этого «расписания». Дождитесь только первого СОБЫТИЯ в очереди с приоритетами и, при использовании, посмотрите на элемент расписания для этого события и дайте ему заполнить свое следующее событие в очереди.

Пожалуйста, спросите, нуждается ли что-либо в разъяснении выше?

EDIT:

Вы будете запускать ваше мероприятие в определенную дату и время в зависимости от того, что вам больше всего нравится. Поскольку у вас будет только ОДНО событие, которого вам придется ждать (вы можете скопировать его из HEAD очереди), у вас есть несколько вариантов, например:

  • SetTimer () для интервалов в одну секунду при сравнении текущего времени со временем события.
  • SetTimer () для продолжительности текущего времени до времени события.
  • запустить другой поток, waitforsingleobject внутри него, с задержкой, вычисленной как eventi_time-now - это будет наиболее сложно, так как вам нужно быть осторожным при вызове чего-либо в главном потоке
  • ... и т. Д.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...