据我所知,调用TThread的Synchronize将执行同步代码,就好像它在主线程中运行一样。比方说,我在主线程中,我有一个按钮:TThread的同步行为
procedure TForm3.Button1Click(Sender: TObject);
var
A, B, C : String;
begin
A := 'test1';
B := 'test2';
C := 'test3';
Button1.Enabled := false;
end;
在辅助线程,我有以下代码:
procedure TestThread.ChangeButton1;
begin
Form3.Button1.Enabled := true;
end;
(注意不要代码本身 - 这只是一个例子,它是不应该意味着什么。)
说我对单击Button1,右后,而Button1Click正在执行,TestThread调用Synchronize(ChangeButton1);我们可以知道何时ChangeButton1将由主线程运行吗?如果是这样,是否会在整个Button1Click已被执行后;或者它可以在程序中的四个操作中的任何一个之间?
对不起,如果这是一个愚蠢的问题。我一直无法找到这个问题的答案。这将使我更好地了解Synchronize过程的工作原理。
谢谢。