首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清除ThreadPool

清除ThreadPool
EN

Stack Overflow用户
提问于 2009-09-21 15:45:49
回答 2查看 4.9K关注 0票数 0

我正在使用C#在Visual Studio2008中开发我的第一个ThreadPool应用程序。

我有一个报告,它必须使用我们SQL Server上的数据对2000到4000个零件执行计算。

我将所有的零件号排列在一个ThreadPool中,在那里它们离开并计算它们的结果。当这些线程完成时,将激发RegisterWaitForSingleObject事件以注销排队项的句柄。

在所有排队的项目都完成后,有没有办法从ThreadPool中删除它们?

看起来,如果有人使用一组新的2000到4000个部件运行另一个报表,我无法删除以前的部件数组。

如何删除以前排队的项目?用workerThreads =0调用SetMaxThreads会这样做吗?

我意识到我可以进行实验,但我可能会浪费这周的大部分时间进行实验。

耽误您时间,实在对不起,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-21 15:49:07

一旦ThreadPool项完成,它就会自动从队列中删除。向您表明它们不是的是什么?

票数 4
EN

Stack Overflow用户

发布于 2009-09-21 15:49:51

假设您打算中断(取消)当前队列中的工作...

更改最大线程数不会影响挂起的工作;它只会更改可用于执行此操作的线程数量-通常情况下,扰乱这一点并不是一个好主意(您的代码并不是唯一使用ThreadPool的对象)。我会使用自定义队列--编写一个基本的(线程安全的)生产者/消费者队列是相当容易的,或者.NET 4.0包含了一些非常好的自定义线程队列。

然后,您可以中止自定义队列并启动一个新队列。

我写了一个简单的here;目前它想要在终止之前干净地退出(即排空队列),但在当前项之后添加一个立即停止的标志将是足够容易的(不要在执行中的任意点中断/中止线程;这从来不是一个好主意)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1455217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档