Как я могу написать приложение-планировщик в .NET?

Как я могу написать приложение-планировщик на C# .NET?

Было бы полезно, если бы вы разместили более подробную информацию ...

Jason Bunting 30.09.2008 19:42

Что вы пытаетесь запланировать? вы определились с алгоритмом планирования?

Omar Kooheji 30.09.2008 19:46

Вы имеете в виду приложения для планирования событий и людей?

Erik Funkenbusch 28.02.2009 23:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
7 548
6

Ответы 6

Все зависит от ваших требований:

  • Если у вас есть доступ к базе данных, вы используете таблицу в качестве очереди и службу для регулярного опроса очереди.

  • Если ваше приложение является только клиентским (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 или автономное приложение или что-то еще.

А как насчет ежедневного повторения?

Ortund 02.04.2015 15:47

Вы также можете попробовать Quartz.Net.

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

Niall C. 13.02.2014 19:13

@NiallC. Вы бы скопировали всю документацию Quartz.NET в ответ? Что еще вы ожидаете увидеть в этом ответе? Если «связанная страница изменяется», всегда есть archive.org. Кстати, я знаю, что ваш ответ был написан автоматически, но ты разрешил это. Это ваш комментарий некачественный.

Mauricio Scheffer 14.02.2014 05:46

Этому ответу 6 лет. Неужели Stack Overflow внезапно внедрил новую политику в отношении ответов только по ссылкам или что-то в этом роде?

user22467 21.02.2014 14:16

@NickAceves да, теперь они рассматривают ответы, которые в основном являются просто ссылкой «некачественные ответы». Это как если бы люди, управляющие Stackoverflow, каждый день активно работали, делая все, что в их силах, чтобы люди не отвечали на вопросы.

Mauricio Scheffer 22.02.2014 21:47

Напишите службу Windows, есть отличные разделы справки в MSDN о том, что вам нужно сделать, чтобы сделать ее устанавливаемой и т. д.

Затем добавьте в свой проект таймер. Нет таймер Winforms, они не работают в службах Windows. Вы заметите это, когда события не начнутся. Выясните, каково ваше требуемое разрешение таймера - другими словами, если у вас что-то запланировано на полночь, нормально ли, если оно начнется где-то между полуночью и 12:15? В процессе производства вы установите таймер на запуск каждые X минут, где X - это все, что вы можете себе позволить.

Наконец, когда я это делаю, я использую оператор Switch и перечисление для создания конечного автомата, который имеет такие состояния, как «Запуск», «Неустранимая ошибка», «Истекший таймер / сканирование для работы» и «Работа». (Я делю указанное выше X на два, поскольку для выполнения работы требуется два X.)

Возможно, это не лучший способ сделать это, но я делал это уже пару раз, и у меня это сработало.

Вы можете попробовать использовать API планировщика задач Windows

Зачем писать без комментариев? Придурок.

abatishchev 31.03.2014 21:28

Другие вопросы по теме