vložil Radek Červinka
30. prosince 2019 21:53
Už dříve jsem psal o TThread.Queue, ale možná jsem nezdůraznil, že v případě volání z hlavního vlákna je takový kód
proveden okamžitě, tj. bez volání synchronize, což třeba nejen u Android aplikací může být požadováno.
Pro takový případ je k dispozici TThread.ForceQueue který zaručí, že i v případě volání z hlavního vlákna je takový kód prováděn se synchronizací.
Zkuste si novou aplikaci a na tlačítko Button1.OnClick dejte
procedure TForm6.Button1Click(Sender: TObject);
begin
TThread.ForceQueue(nil,
procedure
begin
Button1.Caption := 'hello'; // break point 1
//Button1.Repaint;
end
);
end;// break point 2
A nyní program otestujte. Měl by se nejdříve zastavit na break point 2 a pak až na break point 1. Pokud ForceQueue nahradíte za Queue, tak se pořadí zastavení prohodí.
2598552f-6b4d-4c65-a3d7-43cb704a6412|9|5.0
Tagy: paralel
trik