我需要有关多线程的一些建议。
示例:我想生成200个线程,每个线程应从一个网站获取一个不同的图像(该网站有点慢)。但是应该有最大。一次有40个线程。
任何的想法?
我期待一些答案。
最佳答案
您可以轻松地为此使用ThreadPool
。池在管理线程方面做得很好,但是如果您确实必须限制最大数量,则可以使用:
ThreadPool.SetMaxThreads(40, 40);
// submit 200 tasks to the pool
for(int i = 0; i < 200; i++)
{
ThreadPool.QueueUserWorkItem(
() =>
{
// code for each task
});
}
不幸的是,没有内置的方法等待任务完成,因此您只需要即兴创作即可。如果可以访问.NET 4.0,则可以 checkout
Parallel.For
:ParallelOptions po = new ParallelOptions();
po.MaxDegreeOfParallelism = 40;
Parallel.For(0, 200, po,
i =>
{
// code for each task
});
关于c# - 多线程-产生多个线程并等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451575/