用于多线程Windows服务的线程库

时间:2010-01-06 19:57:18

标签: c# multithreading task-parallel-library threadpool scheduling

我正在寻找一个好的库,最好是在C#中,我可以在Windows服务中使用它,它将处理所需的所有多线程功能。

服务将每隔x分钟运行一次,检查数据库中是否有要调用的进程,并为每个进程生成一个线程并运行它。

每个线程都应该处理异常,记录等。

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

这有点舌头,但.NET Framework怎么样? System.Threading命名空间拥有您需要的所有内容。

如果您可以使用.NET 4或Rx Framework中的backport,那么任务并行库也可以使其中的一些变得更容易,但即使没有它,标准框架也可以满足您的所有需求。

答案 1 :(得分:4)

考虑这个项目 http://www.codeplex.com/smartthreadpool

项目描述

智能线程池是用C#编写的线程池。它比.NET内置线程池更先进。 以下是线程池功能的列表:

  • 线程数根据池中线程的工作负载动态变化。
  • 工作项可以返回值。
  • 可以取消工作项目。
  • 执行工作项(限制)时使用调用者线程的上下文。
  • 使用最少数量的Win32事件句柄,因此应用程序的句柄数不会爆炸。
  • 来电者可以等待多个或所有工作项完成。
  • 工作项可以有一个PostExecute回调,工作项完成后会立即调用。
  • 工作项目附带的状态对象可以自动处理。
  • 将工作项例外发送回来电。
  • 工作项目具有优先权。
  • 工作项目组。
  • 调用者可以暂停线程池和工作项组的启动。
  • 主题优先。
  • 可以运行具有单线程单元的COM对象。
  • 支持操作和Func代表。
  • 支持WindowsCE(限制版)
  • 可以在运行时更改MaxThreads和MinThreads。
  • 取消行为得到了改善。

答案 2 :(得分:2)

如果你需要一个支持多线程的调度库,我以前用过:Quartz.NET

http://quartznet.sourceforge.net/