我很抱歉有一个多余的问题.但是,我找到了很多解决我问题的方法,但没有一个解释得很清楚.我希望在这里说清楚.
我的C#应用程序的主线程使用ThreadPool生成1..n后台工作者.我希望原始线程锁定,直到所有工人都完成.我特别研究了ManualResetEvent,但我不清楚它的用途.
在伪:
foreach( var o in collection )
{
queue new worker(o);
}
while( workers not completed ) { continue; }
Run Code Online (Sandbox Code Playgroud)
如果有必要,我会知道即将排队的工人数量.
作为C#的初学者,我对线程非常陌生.我有一个程序将触发Windows应用程序内的多个线程.我的目标是为列表中的每个项目启动一个新线程.此列表中的项目是网络上的工作站名称.创建的每个线程都会在每台机器上进行修复,当线程完成后,它会写入任何发现的错误的日志文件等.但我想要确定的是所有线程何时完成.所以,如果我有100台机器,100个线程,我如何确定何时关闭?
以下是我的方法: -
private void repairClientsToolStripMenuItem_Click(object sender, EventArgs e)
{
if (machineList.Count() != 0)
{
foreach (string ws in machineList)
{
new Thread(new ParameterizedThreadStart(fixClient), stack).Start(ws);
}
}
else
{
MessageBox.Show("Please import data before attempting this procedure");
}
}
Run Code Online (Sandbox Code Playgroud)