Создайте приоритетную очередь запланированных событий, и для каждого «расписания» заполните очередь только СЛЕДУЮЩИМ событием для этого «расписания». Дождитесь только первого СОБЫТИЯ в очереди с приоритетами и, при использовании, посмотрите на элемент расписания для этого события и дайте ему заполнить свое следующее событие в очереди.
Пожалуйста, спросите, нуждается ли что-либо в разъяснении выше?
EDIT:
Вы будете запускать ваше мероприятие в определенную дату и время в зависимости от того, что вам больше всего нравится. Поскольку у вас будет только ОДНО событие, которого вам придется ждать (вы можете скопировать его из HEAD очереди), у вас есть несколько вариантов, например:
- SetTimer () для интервалов в одну секунду при сравнении текущего времени со временем события.
- SetTimer () для продолжительности текущего времени до времени события.
- запустить другой поток, waitforsingleobject внутри него, с задержкой, вычисленной как eventi_time-now - это будет наиболее сложно, так как вам нужно быть осторожным при вызове чего-либо в главном потоке
- ... и т. Д.