gpt4 book ai didi

c# - 检查是否至少有一个线程完成

转载 作者:行者123 更新时间:2023-11-30 22:03:20 25 4
gpt4 key购买 nike

首先,我完全不熟悉 C# 中的线程。我创建了多个线程,如下所示。

if (flag)
{
foreach (string empNo in empList)
{
Thread thrd = new Thread(()=>ComputeSalary(empNo));
threadList.Add(thrd);
thrd.Start();
}
}

在继续进行之前,我需要检查是否至少有一个线程已完成执行,以便我可以执行其他操作。

我还尝试创建线程类型的列表并将其添加到列表中,这样我就可以检查是否至少有一个线程已完成执行。我尝试使用 thrd.IsAlive 但它总是给我当前的线程状态。

有没有其他方法可以检查至少一个线程是否已完成执行?

最佳答案

您可以使用 AutoResetEvent。

var reset = new AutoResetEvent(false); // ComputeSalary should have access to reset
.....
....

if (flag)
{
foreach (string empNo in empList)
{
Thread thrd = new Thread(()=>ComputeSalary(empNo));
threadList.Add(thrd);
thrd.Start();
}
reset.WaitOne();
}

.....
.....

void ComputeSalary(int empNo)
{
.....
reset.set()
}

其他选项是回调函数、事件或标志/计数器(不建议这样做)。

关于c# - 检查是否至少有一个线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26093797/

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