gpt4 book ai didi

multithreading - 线程正在桌面上书写

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

我试图创建一个运行时线程,但线程的行为很奇怪,代码没有 Canvas 引用。

procedure TBruteThread.Execute;
var
j: Integer;
begin
inherited;
FreeOnTerminate:=True;
for j:=1 to StrToInt(Form1.Edit1.Text) do begin
if Terminated then break;
Form1.Label2.Caption:=IntToStr(j);
end;
Form1.Label2.Caption:='Thread is destroyed';
Self.Terminate;
end;

enter image description here

有人有任何想法来解决这个奇怪的问题吗?

最佳答案

您的代码的问题在于它违反了 VCL 线程规则。必须从主线程访问 VCL 组件。使用 Synchronize 或 Queue(TThread 的方法)在主线程上执行 GUI 更新。

其他的建议:

  • 在线程方法之外设置 FreeOnTerminate。
  • 调用 Terminate 作为线程方法的最后一个 Action 是没有意义的。线程即将终止。
  • 关于multithreading - 线程正在桌面上书写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254221/

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