多线程Windows服务的线程库
我正在寻找一个好的库,最好在C#中,我可以在Windows服务中使用它,它将处理所有需要的多线程功能。多线程Windows服务的线程库
该服务将每x分钟运行一次,检查数据库以调用进程,并为每个进程生成一个线程并运行它。
每个线程都应该处理异常,日志记录等。
有什么建议吗?
考虑这个项目 http://www.codeplex.com/smartthreadpool
项目描述
智能线程池是用C#编写线程池。它比.NET内置线程池更先进。 以下是线程池功能的列表:
- 线程数根据池中线程的工作负载而动态改变。
- 工作项目可以返回一个值。
- 工作项目可以取消。
- 调用者线程的上下文用于工作项目执行(有限)时。
- 使用最少数量的Win32事件句柄,因此应用程序的句柄计数不会爆炸。
- 调用者可以等待多个或所有工作项目完成。
- 工作项目可以有一个PostExecute回调,在工作项目完成后立即调用。
- 伴随工作项目的状态对象可以自动处理。
- 工作项例外被发回给调用者。
- 工作项目优先。
- 工作项目组。
- 调用方可以暂停线程池和工作项组的开始。
- 线程优先。
- 可以运行具有单线程单元的COM对象。
- 支持Action和Func委托。
- 支持WindowsCE(受限)
- MaxThreads和MinThreads可以在运行时更改。
- 取消行为是imporved。
Fahad, 这正是我正在寻找的。 如果有人有一个更好的主意,我会等待,否则我会将你的标记作为答案。谢谢 – anon2009 2010-01-06 20:09:52
这是有点舌头,但.NET框架呢?命名空间有你需要的所有东西。
如果您可以使用.NET 4或Rx框架中的backport,任务并行库也可能使这一点变得更容易一些,但即使没有这些,标准框架也可以满足您所需的一切。
里德, 我正在寻找一个完整的解决方案,使用System.Threading的代码实现。 不,我现在还不能使用4.0。 谢谢。 – anon2009 2010-01-06 20:07:27
你可以使用Rx框架吗?它包含Task Parallel库的完整后端库,它提供了大量的可用性(比迄今为止我见过的任何第三方库更好)。 – 2010-01-06 20:34:49
如果您需要一个具有多线程支持的调度库,我以前使用过这个:Quartz。NET
你能举个例子说明你如何使用它吗? – anon2009 2010-01-06 20:28:49
网站上有一个很好的教程,但您基本上可以设置调度“触发器”(基于cron语法),以确定作业何时触发,然后将特定作业与触发器相关联。 Quartz.NET“Scheduler”为您处理所有时间,并在设定的时间调用您的作业。 http://quartznet.sourceforge.net/tutorial/index.html – 2010-01-06 20:49:56
我们用它来启动定期的数据库查询,从而导致其他操作触发。 – 2010-01-06 20:51:01
任何带有完整源代码示例的最终解决方案? – Kiquenet 2013-01-31 21:15:14