gpt4 book ai didi

c# - 如何终止在 C# 中的 foreach 循环中启动的线程

转载 作者:可可西里 更新时间:2023-11-01 10:56:43 28 4
gpt4 key购买 nike

我在 Windows 服务中为每个循环启动了多个线程。我没有为这些线程提及任何名称。我如何终止这些线程。我使用以下代码创建线程。

 new Thread(() =>
{
foreach (MyClass detail in MyclassList)
{
DoWork(detail);
}

}).Start();

通过启动这些线程,我为每个细节创建了一个计划任务。我可以在计划完成后处理这个线程吗?如何处理?

最佳答案

强行终止线程绝不是个好主意。您真正应该做的是在循环内放置一些经过适当设计的“我应该继续”检查,您可以在外部将其设置为“否”。 如何做到这一点更多地取决于上下文...例如:

        int shouldExit = 0;
new Thread(() =>
{
foreach (MyClass detail in MyclassList)
{
if(Thread.VolatileRead(ref shouldExit) != 0) break;
DoWork(detail);
}
}).Start();
...
// to terminate loop:
Thread.VolatileWrite(ref shouldExit, 1);

但是,有无数种方法可以解决线程安全的退出测试;唯一有点棘手的事情是通过访问被检查的事物来保持某种上下文。

关于c# - 如何终止在 C# 中的 foreach 循环中启动的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10634506/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com