如何使用SmartThreadPool取消等待终止工作项

本文关键字:终止 工作 等待 取消 何使用 SmartThreadPool | 更新日期: 2023-09-27 18:25:54

我们使用.Net 3.5和Ami Bar的C#SmartThreadPool来管理多个工作项。当我们的应用程序关闭时,我们想"告诉"所有工作项,他们应该尽快完成工作,然后给他们一个宽限期来完成,然后杀死仍在运行的工作项。我们的工作项是协作的,它们需要能够检查是否"被告知"要完成工作并退出长时间运行的循环。

使用workItemResult.Cancel(false)"通知"工作项完成,然后在工作项内部使用SmartThreadPool.IsWorkItemCanceled来停止其工作,但事实证明WaitAll不会等待取消的项,因此我们无法阻止宽限期。

我开始尝试为每个工作项创建一个WorkItemGroup,对工作项调用Cancel(false),然后调用WorkItemGroup.WorkForIdle(gracePeriod),但想检查这是否值得追求。

如果你对此有任何想法,我将不胜感激。

感谢

如何使用SmartThreadPool取消等待终止工作项

我最终修补了SmartThreadPool,如下所述http://smartthreadpool.codeplex.com/discussions/345937