如果一个线程异步读取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)
如果它不是线程安全的,我应该如何在复选框更改其属性时捕获事件.
我是线程的新手.我正在使用第三方库,它使用的线程有时会调用我提供的程序.
当线程调用时,如何从我的过程更新TLabel.Caption?
如果我在其他地方调用了InitializeCriticalSection,那就像它一样简单
EnterCriticalSection(CritSect);
GlobalVariable := 'New TLabel.Caption';
LeaveCriticalSection(CritSect);
Run Code Online (Sandbox Code Playgroud)
然后在我的主线程中:
EnterCriticalSection(CritSect);
Label1.Caption:= GlobalVariable;
LeaveCriticalSection(CritSect);
Run Code Online (Sandbox Code Playgroud)
但是,如何获取要调用的主线程代码?线程可以使用SendMessage吗?或者是否有一些更好/更简单的方法(.OnIdle可以检查线程设置的标志?)
谢谢.