Я ищу библиотеку С#, предпочтительно с открытым исходным кодом, которая позволит мне планировать задачи с достаточной гибкостью. В частности, я должен иметь возможность планировать, чтобы все выполнялось каждые N единиц времени, а также "Каждый будний день в XXXX раз" или "Каждый понедельник в XXXX раз". Больше возможностей, чем было бы хорошо, но не обязательно. Это то, что я хочу использовать в Azure WorkerRole, который сразу же исключает запланированные задачи Windows, "на", "Cron" и любое стороннее приложение, которое требует установки и/или графического интерфейса для работы. Я ищу библиотеку.
Рекомендовать библиотеку планирования задач С#
Ответ 1
http://quartznet.sourceforge.net/
"Quartz.NET - это порт очень пропульсивной (sic!) с открытым исходным кодом структуры планирования работы Java, Quartz."
PS: Слово мудрому, не пытайтесь просто перейти к quartz.net, когда на работе; -)
Ответ 2
Я использовал Quartz в свои дни Java, и он отлично работал. Я сейчас использую его для какой-то работы .Net, и он работает еще лучше (конечно, есть несколько лет, чтобы он мог стабилизироваться). Поэтому я, разумеется, второй раз рекомендую для этого.
Еще одна интересная вещь, на которую вы должны обратить внимание, которую я только начал играть, - это новая программа System.Threading.Tasks в .NET 4.0. Я только что использовал задачи для распараллеливания работы, и он пользуется большим преимуществом для нескольких ядер/процессоров. Я заметил, что в нем есть класс TaskScheduler, я не смотрел его подробно, но он имеет такие методы, как QueueTask, DeQueTask и т.д. Возможно, стоит хоть какое-то исследование.
Ответ 3
См. Новая библиотека классов планировщика заданий для .NET на Codeproject.
Ответ 4
Я прочитал о Quartz в этом вопросе Как я могу запланировать службу Windows С# для выполнения задачи ежедневно?. Это библиотека С# и позволяет гибкое планирование.
Ответ 5
Кварц кажется хорошим решением.
Мне недавно (в этом году) пришлось написать персонализированный планировщик задач по крупному проекту, над которым я работал. Они также не могли использовать планировщик заданий Windows, а также хотели иметь возможность выполнять пользовательские функции благодаря загрузке сборок (через веб-сайт ASP.net), а служба выполнила соответствующую задачу в указанное время.
Вещь была честно немного кошмаром (не так много для проектирования и реализации, но логика планирования была немного перетянута).
Я бы очень рекомендовал исчерпать все другие возможности, прежде чем решиться "бросить свои собственные" (a.k.a изобретать колесо!).
Ответ 6
Существует новый планировщик облачных вычислений из Aditi Technologies, называемый Scheduler.
Планировщик позволяет разработчикам планировать выполнение задач через HTTP webhooks, которые запускаются на простых или сложных графиках CRON.