Вопрос

Я ищу хорошую библиотеку, предпочтительно на C #, которую я мог бы использовать в службе Windows, и она будет обрабатывать все необходимые функции многопоточности.

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

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

Есть какие-нибудь предложения?

Это было полезно?

Решение

Рассмотрим этот проект http://www.codeplex.com/smartthreadpool

Описание проекта

Smart Thread Pool - это пул потоков, написанный на C #.Он намного более продвинутый, чем .Встроенный пул потоков NET.Вот список функций пула потоков:

  • Количество потоков динамически изменяется в зависимости от рабочей нагрузки на потоки в пуле.
  • Рабочие элементы могут возвращать значение.
  • Рабочий элемент может быть отменен.
  • Контекст вызывающего потока используется при выполнении рабочего элемента (ограничено).
  • Использование минимального количества дескрипторов событий Win32, поэтому количество дескрипторов приложения не увеличится.
  • Вызывающий может дождаться завершения нескольких или всех рабочих элементов.
  • Рабочий элемент может иметь обратный вызов postExecute, который вызывается, как только рабочий элемент будет завершен.
  • Объект состояния, сопровождающий рабочий элемент, может быть удален автоматически.
  • Исключения рабочего элемента отправляются обратно вызывающему объекту.
  • Рабочие элементы имеют приоритет.
  • Группа рабочих элементов.
  • Вызывающий может приостановить запуск пула потоков и группы рабочих элементов.
  • Потоки имеют приоритет.
  • Может запускать COM-объекты, которые имеют однопоточную квартиру.
  • Поддержите делегатов акции и функции.
  • Поддержка WindowsCE (ограниченная)
  • Максимальные и минимальные потоки могут быть изменены во время выполнения.
  • Поведение отмены нарушено.

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

Это немного косноязычно, но как насчет .NET Framework?В System.Threading в namespace есть все, что вам для этого нужно.

Если вы можете использовать .NET 4 или backport в Rx Framework, библиотека Task Parallel Library также может немного упростить эту задачу, но даже без этого в стандартной платформе есть все, что вам нужно.

Если вам нужна библиотека планирования с поддержкой многопоточности, я уже использовал это раньше:Quartz.NET

http://quartznet.sourceforge.net/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top