-1
林项目添加到ListView,但我需要能够运行一个线程对每个项目获得更多的数据,该项目(需要更长的时间来获得) 这只是一个小样本我尝试现在,但由于某种原因线程打印约5项左右的名称,然后等待5秒BackgroundWorker的阵列在一个循环
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
Console.WriteLine((string)e.Argument);
Thread.Sleep(5000);
}
。
BackgroundWorker[] threadArray = new BackgroundWorker[items.Count];
int gIndex = -1;
foreach (Item gItem in items.Values)
{
gIndex++;
ItemDescription ID = getDescription(gItem.id);
_ListViewAddRow(gIndex, ID.name, ID.url);
threadArray[gIndex] = new BackgroundWorker();
threadArray[gIndex].DoWork += new DoWorkEventHandler(worker_DoWork);
threadArray[gIndex].RunWorkerAsync(ID.name);
}
这就是我希望它做的从这个代码。你在期待什么? – steve16351
我希望它等待5秒钟,这两点打印下一个项目之前,但其约5个印刷 - 7项,然后等待5秒钟,然后打印另5 - 7项 – ramafe
背景工人并行运行,所以你”重新首先在大致相同的时间开始每个项目一个线程,它们都打印,然后他们在等待5秒,在并行。他们不会一个接一个地执行。 – steve16351