Delphi Fmx でスレッドを同期する方法
Delphi FMXでスレッドの同期を実現するには、TThread.Synchronizeメソッドを使用します。TThread.Synchronizeメソッドは匿名メソッドをパラメーターとして受け取ります。この匿名メソッドは、メインスレッドのコンテキストで実行されます。具体的な使用例は次のとおりです。
TMyThread = class(TThread)
private
procedure UpdateUI;
protected
procedure Execute; override;
end;
procedure TMyThread.Execute;
begin
// 执行耗时操作
// 调用线程同步方法更新UI
TThread.Synchronize(nil, UpdateUI);
end;
procedure TMyThread.UpdateUI;
begin
// 在主线程中更新UI
end;
TMyThread の Execute メソッド内では時間のかかる処理を実行可能。その後、TThread.Synchronize メソッドを使用して UpdateUI メソッドを呼び出すと、主スレッドのコンテキスト内で実行され、UI の更新を行う。
TThread.Synchronizeメソッドはメインスレッドのコンテキストで実行されるため、UpdateUIメソッド内で時間のかかる処理を実行すると、メインスレッドの実行がブロックされることに注意してください。