【发布时间】:2021-12-26 20:22:02
【问题描述】:
我是多线程的新手。我有一个 Parallel.For 循环工作得很好!
我确实有一个取消令牌。
我们的 DBA 恰好注意到我有很多活动线程(我正在测试和使用该工具,但它不会在生产中使用)。
无论如何,我开始寻找处理后清理线程的方法,但找不到任何东西。除了cts.Cancel,我还需要清理吗?
【问题讨论】:
-
(提示:当你为其他系统做大部分等待的事情时,比如数据库调用,最好使用 async/await 而不是线程。)你能提供更多的上下文吗?你的问题?例如 - 代码?通常,线程不是您必须清理的东西。可能您忘记了
using资源的一些Disposable语句。我推荐taking the tour,以及阅读how to ask a good question 和what's on topic。 -
我的开发网络没有连接到互联网,所以很难复制代码。我在由 queuebackgroundworkitem 调用的 dll 中运行该进程。这是非常基本的 var po = new ParallelOptions(); var cts = new CancellationTokenSource(); po.CancellationToken = cts.Token; Parallel.For(o, page.Count, po, index => { CreateObject(page[index]); }); cts.Cancel();
-
请真正阅读我链接到的文章 - 并编辑您的问题以提供更多信息,同时注意正确的格式。并确保它包含足够的信息。我们无法发现您未提供的代码中的问题。
标签: c# multithreading parallel-processing parallel.foreach