场景
我的应用程序中有一个后台工作线程,它会进行一系列的处理。我特意使用这种实现方式来保持用户界面流畅,并防止其冻结。我想保留后台工作线程,但在该线程内部,仅产生另外三个线程 - 让它们共享处理(目前工作线程只是循环遍历并逐个处理每个资产。但我想通过仅使用有限数量的线程来加快处理速度。
问题
给定下面的代码,如何使循环选择一个空闲的线程,如果没有空闲线程则等待,直到有空闲线程再继续。
代码
foreach (KeyValuePair<int, LiveAsset> kvp in laToHaganise)
{
Haganise h = new Haganise(kvp.Value,
busDate,
inputMktSet,
outputMktSet,
prodType,
noOfAssets,
bulkSaving);
h.DoWork();
}
思考
我猜想我需要先创建三个新线程,但我的担忧是,如果每次我都实例化一个新的Haganise对象-如何将正确的“h”对象传递给正确的线程.....
Thread firstThread = new Thread(new ThreadStart(h.DoWork));
Thread secondThread =new Thread(new ThreadStart(h.DoWork));
Thread thirdThread = new Thread(new ThreadStart(h.DoWork));
非常感谢您的帮助。