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メソッド内で時間のかかる処理を実行すると、メインスレッドの実行がブロックされることに注意してください。

bannerAds