




Все зависит от ваших требований:
Если у вас есть доступ к базе данных, вы используете таблицу в качестве очереди и службу для регулярного опроса очереди.
Если ваше приложение является только клиентским (CLI), вы можете использовать системный планировщик («Запланированные задачи»).
Наконец, если ваше приложение находится только в базе данных (например, с использованием CLR в SQL Server 2005), вы можете создать задание SQL Server, чтобы запланировать его.
Вы также можете использовать элемент управления таймером, чтобы программа запускала любое событие, которое вы хотите, каждые X тиков или даже только одно. Однако лучшее решение действительно зависит от того, чего вы пытаетесь достичь.
Предполагая, что вы пишете некую систему, которая должна выполнять действие в определенное время, нижеследующее будет охватывать фундаментальную задачу создания события.
Создайте System.Timer для каждого планируемого события (заключите в объект, содержащий параметры для события). Установите таймер, рассчитав миллисекунды до того, как должно произойти событие. НАПРИМЕР:
// Set event to occur on October 1st, 2008 at 12:30pm.
DateTime eventStarts = new DateTime(2008,10,1,12,30,00);
Timer timer = new Timer((eventStarts - DateTime.Now).TotalMilliseconds);
Поскольку вы не вдавались в подробности, все остальное зависит от вас; обработайте событие timer.Elapsed, чтобы делать то, что вы хотите, и напишите приложение как службу Windows или автономное приложение или что-то еще.
А как насчет ежедневного повторения?
Вы также можете попробовать Quartz.Net.
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится.
@NiallC. Вы бы скопировали всю документацию Quartz.NET в ответ? Что еще вы ожидаете увидеть в этом ответе? Если «связанная страница изменяется», всегда есть archive.org. Кстати, я знаю, что ваш ответ был написан автоматически, но ты разрешил это. Это ваш комментарий некачественный.
Этому ответу 6 лет. Неужели Stack Overflow внезапно внедрил новую политику в отношении ответов только по ссылкам или что-то в этом роде?
@NickAceves да, теперь они рассматривают ответы, которые в основном являются просто ссылкой «некачественные ответы». Это как если бы люди, управляющие Stackoverflow, каждый день активно работали, делая все, что в их силах, чтобы люди не отвечали на вопросы.
Напишите службу Windows, есть отличные разделы справки в MSDN о том, что вам нужно сделать, чтобы сделать ее устанавливаемой и т. д.
Затем добавьте в свой проект таймер. Нет таймер Winforms, они не работают в службах Windows. Вы заметите это, когда события не начнутся. Выясните, каково ваше требуемое разрешение таймера - другими словами, если у вас что-то запланировано на полночь, нормально ли, если оно начнется где-то между полуночью и 12:15? В процессе производства вы установите таймер на запуск каждые X минут, где X - это все, что вы можете себе позволить.
Наконец, когда я это делаю, я использую оператор Switch и перечисление для создания конечного автомата, который имеет такие состояния, как «Запуск», «Неустранимая ошибка», «Истекший таймер / сканирование для работы» и «Работа». (Я делю указанное выше X на два, поскольку для выполнения работы требуется два X.)
Возможно, это не лучший способ сделать это, но я делал это уже пару раз, и у меня это сработало.
Вы можете попробовать использовать API планировщика задач Windows
Зачем писать без комментариев? Придурок.
Было бы полезно, если бы вы разместили более подробную информацию ...