Запланированные задачи в одном приложении (.Net C #) - PullRequest
0 голосов
/ 26 декабря 2011

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

Но каждая подписка имеет свое время от времени + то, что должны делать каждые х минутзапустите функцию.

Может быть много одновременно работающих подписок.

Возможно, она должна выглядеть как запланированное задание, которое запускается в одно конкретное время и выполняется каждую х минуту или одно конкретное время.

Надеюсь, я правильно опишу то, что хочу, мой английский не самый лучший.

Кто-нибудь знает, как я создаю приложение для этого?

Ответы [ 4 ]

5 голосов
/ 26 декабря 2011

У вас есть несколько вариантов:

  • Используйте агент SQL и настройте заданий с требуемым расписанием (конечно, это предполагает, что вы используете SQL Server).
  • Напишите Служба Windows с таймером, который запрашивает вашу базу данных и при необходимости выполняет различные задачи.

Вы упомянули запланированные задачи Это может быть другой вариант, но для этого потребуется автоматизировать настройку новых задач, а также фактических задач для запуска.И то, и другое проще сделать с помощью вариантов, которые я описал выше.

2 голосов
/ 26 декабря 2011

Я бы порекомендовал вам использовать System.Threading.Timer для этого. Чтобы запланировать работу, сделайте следующее:

new Timer(_ => DoTheJob()).Change(your_interval_in_milliseconds, Timeout.Infinite);

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

1 голос
/ 26 декабря 2011

Возможно, вы описываете, что Quartz.NET может сделать для вас.Проверьте это, возможно, стоит потратить некоторое время.

0 голосов
/ 26 декабря 2011

Так что вы должны написать какой-нибудь планировщик.Он будет брать задачи из очереди и выполнять их ... Вы можете создать планировщик таким образом, чтобы каждая задача, например, выполнялась в отдельном потоке, и это значительно улучшило бы производительность!

...