我试图创建一个运行时线程,但线程表现得很奇怪,代码没有画布引用。
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;
有人有任何想法解决这个奇怪的问题吗?
答案 0 :(得分:5)
您的代码存在的问题是它违反了VCL线程规则。必须从主线程访问VCL组件。使用Synchronize或Queue(TThread的方法)在主线程上执行GUI更新。
其他评论: