C#for循环中的多线程,如何检查所有线程的退出
我试图通过一个线程对象调用一个方法,下面是代码C#for循环中的多线程,如何检查所有线程的退出,c#,C#,我试图通过一个线程对象调用一个方法,下面是代码 for (int i = 0; i < 255; i++) { Thread t = new Thread(new ParameterizedThreadStart(Pinger.Ping)); t.Start(i.ToString()); } for(int i=0;i
for (int i = 0; i < 255; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(Pinger.Ping));
t.Start(i.ToString());
}
for(int i=0;i<255;i++)
{
线程t=新线程(新的参数化线程启动(Pinger.Ping));
t、 开始(i.ToString());
}
如何检查每个线程是否都已完成?首先,尽量避免创建这样的线程,因为应用程序将陷入混乱(内存、线程分配),手动管理线程可能很棘手 建议使用线程池为您管理/重用线程 请阅读以下官方文件: 回答你的问题,应该是这样的: (我没有测试代码)
var myTasks=new List();
对于(int i=0;i<255;i++)
{
添加(Task.Factory.StartNew(()=>Pinger.Ping(参数…)));
}
任务。WhenAll(我的任务);
您需要在创建的所有硬盘上调用Join()
List<Thread> threads = new List<Thread>();
for (int i = 0; i < 255; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(Pinger.Ping));
threads.Add(t);
t.Start(i.ToString());
}
for (int i = 0; i < 255; i++)
threads[i].Join();
List threads=newlist();
对于(int i=0;i<255;i++)
{
线程t=新线程(新的参数化线程启动(Pinger.Ping));
添加(t);
t、 开始(i.ToString());
}
对于(int i=0;i<255;i++)
线程[i].Join();
将线程
s转换为任务
s,然后等待所有
/当所有
时,另一种方法是将PLinq与一起用于所有
如果可能,我宁愿使用线程
,如果不使用,我将使用您的解决方案,方法的参数如何Pinger.Ping
List<Thread> threads = new List<Thread>();
for (int i = 0; i < 255; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(Pinger.Ping));
threads.Add(t);
t.Start(i.ToString());
}
for (int i = 0; i < 255; i++)
threads[i].Join();