我有一个计时器每15分钟调用一次函数,这个函数计算我的DGV中线的数量,并为每行(另一个函数)启动一个线程,表示线程解析一个网页,可能需要1秒到10秒完成。实现一个线程队列/等待,如何?
虽然它工作正常,因为它是1-6行,不再会导致请求超时。
我希望它找回在循环不锁定主UI
for (int x = 0; x <= dataGridFollow.Rows.Count - 1; x++)
{
string getID = dataGridFollow.Rows[x].Cells["ID"].Value.ToString();
int ID = int.Parse(getID);
Thread t = new Thread(new ParameterizedThreadStart(UpdateLo));
t.Start(ID);
// <- Wait for thread to finish here before getting back in the for loop
}
我已经在过去24小时内一派很多创建另一个线程之前等待新创建的线程完成处理,阅读了很多关于这个特定问题及其实现(Thread.Join,ThreadPools,Queuing,甚至SmartThreadPool)。
这可能是我读过的正确答案的地方,但我不放心足以与C#来正是DeCypher那些线程工具
感谢您的时间
如果你为什么要使用一个新的线程,而不是调用一个方法,多数民众赞成的情况下? – 2010-11-12 14:25:33
您的for循环如上所列,在UI线程上运行? – CodingGorilla 2010-11-12 14:25:58
如果你开始一个线程,然后立即阻止等待它完成,那么你不会通过启动线程获得任何东西。您可以直接调用'UpdateLo()'并避免麻烦。 – Constantin 2010-11-12 14:39:45