螺纹同时工作

Dav*_*rin 2 c# multithreading

有一个包含100个字符串URI的字符串数组myDownloadList.我想启动5个线程作业,它们将从myDownloadList(如堆栈)弹出下一个URI并对其执行某些操作(下载它),直到堆栈上没有URI(myDownloadList).

这样做的最佳做法是什么?

Ree*_*sey 6

使用ThreadPool,只需设置所有请求.ThreadPool将自动适当地安排它们.

使用任务并行库,使用.NET 4可以更轻松.将每个请求设置为任务非常有效且简单.

  • 如果你正在使用STA(你可能是),你只能在64个等待句柄上使用WaitAll(句柄).只需在循环中单独等待每个句柄,相反,它将正常工作,即:foreach(句柄中的var句柄)handle.WaitOne(); 此限制记录在:http://msdn.microsoft.com/en-us/library/z6w25xa6.aspx (3认同)