use*_*126 6 delphi asynchronous thread-safety
如果一个线程异步读取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;
Run Code Online (Sandbox Code Playgroud)
如果它不是线程安全的,我应该如何在复选框更改其属性时捕获事件.
Dav*_*nan 11
不,这不安全.您的代码可能导致窗口句柄与错误的线程相关联.
不要使用GUI来存储应用程序状态.使用GUI显示该状态的视图.一旦你将状态与视图分开,你就回家了.您的工作线程可以使用基础状态而无需触及GUI.
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |