gpt4 book ai didi

multithreading - TTimer.OnTimer是否会使工作线程与主线程同步?

转载 作者:行者123 更新时间:2023-12-03 19:44:03 26 4
gpt4 key购买 nike

我必须使用遗留代码。该代码在主线程中创建了一个TTimer
OnTimer事件中,计时器会定期检查工作线程中某些数据的状态。

伪代码:

procedure MainForm.OnTimer(Sender: TObject);
begin
if WorkerThread.Data.State = full then
begin
WorkerThread.Free; //This freezes GUI.
end else
//Do something else.
end;

问题是当 WorkerThread终止时,我想做一些后台操作。为了避免同步,我重写了 DoTerminate方法。但是,在这种特殊情况下,这无济于事,并且在 DoTerminate完成之前,我的GUI被冻结。

我能以某种方式避免冻结吗?

谢谢。

最佳答案

这里没有足够的代码来确定任何内容。但是,在线程上调用Free会导致对Terminate的调用,然后是WaitFor的调用。很可能没有等待返回,这与冻结的UI一致。

关于multithreading - TTimer.OnTimer是否会使工作线程与主线程同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8654111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com