我试图在线程运行完成后运行一个函数。我的线程在按下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