スレッドの実行が完了した後に関数を実行しようとしています。 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;
}
forループであなたの 'ProbeThread.Join();'をラップしたのはなぜですか? – Madenis
私は最初にforループなしでそれを飽きさせましたが、それでも私には同じ問題がありました。だから私はそれが修正されるかどうかを見るためにforループで疲れましたが、それはしませんでした。 – Satish
UIスレッドは 'someThread.Join();'を実行するとフリーズします。これは、UIスレッドが他のスレッドが停止するまでブロックするためです。 – Maarten