我的情況是: 循環和線程正在並行工作..我想停止循環的執行直到線程完成其功能,當線程狀態停止,當時我想進一步執行循環..循環和線程正在並行工作
for (int pp = 0; pp < LstIop.Count; pp++)
{
oCntrlImageDisplay = new CntrlImageDisplay();
oCntrlImageEdit = new CntrlImageEdit();
axAcroPDF1 = new AxAcroPDFLib.AxAcroPDF();
int pages = ConvertFileIntoBinary(LstIop[pp].Input, oCntrlImageEdit);
oCntrlImageDisplay.ImgDisplay.Image = LstIop[pp].Output;
oCntrlImageDisplay.ImgEditor.Image = oCntrlImageDisplay.ImgDisplay.Image;
if (t1 == null || t1.ThreadState.ToString() == "Stopped")
{
t1 = new Thread(() => convert(pages, LstIop[pp].Input, LstIop[pp].Output, stIop[pp].Temp));
t1.SetApartmentState(ApartmentState.STA);
t1.IsBackground = true;
CheckForIllegalCrossThreadCalls = false;
t1.Start();
}
}
如果循環應該等待線程完成與循環中的工作有什麼不同? – Dialecticus
那麼爲什麼要在一個單獨的線程中調用代碼?爲什麼不直接在循環中調用convert方法? – mbeckish
如果下一個線程無法啓動,直到當前線程完成,那麼你的線程不能並行工作,你可能也不會打擾線程。更好的解決方案是創建一個循環,爲所有圖像啓動線程,然後等待它們全部完成後再繼續。 –