【发布时间】:2013-01-06 19:27:08
【问题描述】:
如果线程从 Delphi 中的 VCL 控件异步读取信息,线程是否安全?
例如。
procedure TMyThread.Execute;
var bOK:Boolean;
iOK:Integer;
begin
while not terminated do
begin
bOk:=MyForm.cbCheckBox.Checked;
iOK:=MyForm.Left;
sleep(20);
end;
end;
如果它不是线程安全的,我应该如何在复选框更改其属性时捕获事件。
【问题讨论】:
-
正如大卫所说,直接处理 vcl 并不安全。在上面的链接中,vcl 控件的状态存储在一个变量中。在这种情况下,它是一个布尔值,这是安全的。但其他类型可能不安全。
标签: delphi asynchronous thread-safety