6

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

该服务将每x分钟运行一次,检查数据库以调用进程,并为每个进程生成一个线程并运行它。

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

有什么建议吗?

+0

任何带有完整源代码示例的最终解决方案? – Kiquenet 2013-01-31 21:15:14

回答

4

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

项目描述

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

  • 线程数根据池中线程的工作负载而动态改变。
  • 工作项目可以返回一个值。
  • 工作项目可以取消。
  • 调用者线程的上下文用于工作项目执行(有限)时。
  • 使用最少数量的Win32事件句柄,因此应用程序的句柄计数不会爆炸。
  • 调用者可以等待多个或所有工作项目完成。
  • 工作项目可以有一个PostExecute回调,在工作项目完成后立即调用。
  • 伴随工作项目的状态对象可以自动处理。
  • 工作项例外被发回给调用者。
  • 工作项目优先。
  • 工作项目组。
  • 调用方可以暂停线程池和工作项组的开始。
  • 线程优先。
  • 可以运行具有单线程单元的COM对象。
  • 支持Action和Func委托。
  • 支持WindowsCE(受限)
  • MaxThreads和MinThreads可以在运行时更改。
  • 取消行为是imporved。
+1

Fahad, 这正是我正在寻找的。 如果有人有一个更好的主意,我会等待,否则我会将你的标记作为答案。谢谢 – anon2009 2010-01-06 20:09:52

5

这是有点舌头,但.NET框架呢?命名空间有你需要的所有东西。

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

+0

里德, 我正在寻找一个完整的解决方案,使用System.Threading的代码实现。 不,我现在还不能使用4.0。 谢谢。 – anon2009 2010-01-06 20:07:27

+0

你可以使用Rx框架吗?它包含Task Parallel库的完整后端库,它提供了大量的可用性(比迄今为止我见过的任何第三方库更好)。 – 2010-01-06 20:34:49

2

如果您需要一个具有多线程支持的调度库,我以前使用过这个:Quartz。NET

http://quartznet.sourceforge.net/

+0

你能举个例子说明你如何使用它吗? – anon2009 2010-01-06 20:28:49

+0

网站上有一个很好的教程,但您基本上可以设置调度“触发器”(基于cron语法),以确定作业何时触发,然后将特定作业与触发器相关联。 Quartz.NET“Scheduler”为您处理所有时间,并在设定的时间调用您的作业。 http://quartznet.sourceforge.net/tutorial/index.html – 2010-01-06 20:49:56

+0

我们用它来启动定期的数据库查询,从而导致其他操作触发。 – 2010-01-06 20:51:01