我有一個計時器每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