【问题标题】:Threading Library for Multithreaded Windows Service [closed]多线程 Windows 服务的线程库 [关闭]
【发布时间】:2011-01-02 05:07:05
【问题描述】:

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

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

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

有什么建议吗?

【问题讨论】:

  • 有完整源代码示例的最终解决方案吗?

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


【解决方案1】:

这有点开玩笑,但是.NET 框架呢? System.Threading 命名空间有你需要的一切。

如果您可以使用 .NET 4 或 Rx 框架中的反向移植,任务并行库也可能会使其中一些变得更容易,但即使没有,标准框架也能满足您的一切需求。

【讨论】:

  • Reed,我正在寻找一个完整的解决方案,一个使用 System.Threading 的代码实现。不,我还不能使用 4.0。谢谢。
  • 你可以使用 Rx 框架吗?它包括 Task Parallel 库的完整反向移植,它提供了大量的可用性(比迄今为止我见过的任何第三方库都要好得多)。
【解决方案2】:

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

项目描述

Smart Thread Pool 是用 C# 编写的线程池。它比 .NET 内置线程池先进得多。 以下是线程池功能列表:

  • 线程数根据池中线程的工作负载动态变化。
  • 工作项可以返回一个值。
  • 可以取消工作项。
  • 执行工作项时使用调用者线程的上下文(受限)。
  • 使用最小数量的 Win32 事件句柄,因此应用程序的句柄计数不会爆炸。
  • 调用者可以等待多个或所有工作项完成。
  • 工作项可以有一个 PostExecute 回调,该回调会在工作项完成后立即调用。
  • 可以自动处置伴随工作项的状态对象。
  • 工作项异常被发送回调用者。
  • 工作项具有优先权。
  • 工作项组。
  • 调用者可以暂停线程池和工作项组的启动。
  • 线程具有优先级。
  • 可以运行具有单线程单元的 COM 对象。
  • 支持 Action 和 Func 委托。
  • 支持 WindowsCE(有限)
  • MaxThreads 和 MinThreads 可以在运行时更改。
  • 改进了取消行为。

【讨论】:

  • Fahad,这正是我要找的。如果有人有更好的主意,我会等待,否则我会将你的标记为答案。谢谢
【解决方案3】:

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

http://quartznet.sourceforge.net/

【讨论】:

  • 你能给我举个例子说明你是如何使用它的吗?
  • 网站上有一个很好的教程,但是您基本上设置了调度“触发器”(基于 cron 语法)来确定作业何时触发,然后将特定作业与触发器相关联。 Quartz.NET“调度程序”为您处理所有时间,并在设定的时间调用您的作业。 quartznet.sourceforge.net/tutorial/index.html
  • 我们用它来启动定期数据库查询,这反过来又会触发其他操作。
  • 看起来很有希望...我会仔细研究一下。它在 Windows Server 2008 中运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多