我試圖在線程運行完成後運行一個函數。我的線程在按下UI按鈕並且線程需要一段時間才能完成時開始。
運行完成後,我想調用一個函數。這是我到目前爲止所嘗試的代碼。當我嘗試運行我的代碼時,線程從不執行,應用程序凍結。任何關於如何解決這個問題的建議都會有幫助。線程運行完畢後運行函數
public bool StartProbe()
{
if (File.Exists(Path.Combine(ObsProbeFolder, "probePJM.exe")))
{
ThreadStart ProbeThreadStart = new ThreadStart(() =>
// right side of lambda
{
// does stuff
});
ProbeThread = new Thread(ProbeThreadStart);
ProbeThread.Priority = ThreadPriority.BelowNormal;
ProbeThread.SetApartmentState(ApartmentState.STA);
ProbeThread.Start();
}
else
{
return false;
}
// waiting for thread to finish
ProbeThread.Join();
// run a function
loadData();
return true;
}
爲什麼你將'ProbeThread.Join();'封裝在for循環中? – Madenis
我最初厭倦了沒有for循環,但它仍然給我同樣的問題。所以我用for循環來看它是否會修復,但它沒有。 – Satish
當您在UI線程上執行'someThread.Join();'時,應用程序會凍結,因爲UI線程將阻塞,直到其他線程停止。 – Maarten