c# - 多线程-产生多个线程并等待

标签 c# multithreading

我需要有关多线程的一些建议。

示例:我想生成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/

相关文章:

c# - C#-BlockingCollection : Can we have 2 threads Take() the same value?

Android:ProgressDialog 的问题

c# - "throw new.."未处理的异常,最佳做法是什么?已经处理了

c# - 是否有必要将 "in"修饰符与只读结构一起使用?

c# - 我可以使用 RandomNumberGenerator.GetInt32() 方法生成密码安全的随机字符串吗?

c# - Postman 文件和 json 即使使用 Content-Type header 也会返回 415 .net core

java - 创建不同的 ImageView 对象 - 不同的时间

c# - 是否有类似 boost::asio for .NET (Mono) 的东西?

c# - 在C#中添加两个不同长度的列表

c# - 以编程方式生成和分配 ComboBox 数据源