Библиотека потоков для многопоточной службы Windows [закрыта]
-
19-09-2019 - |
Вопрос
Я ищу хорошую библиотеку, предпочтительно на 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