長い操作を実行するモデルオブジェクトがあります。これらの操作のいくつかをスレッドで実行して、インターフェイスの応答性を維持したり、2つを一度にダウンロードしたりしようとしていますが、これらの詳細をインターフェイスコードからできるだけ隠したいと思います。AsyncCallライブラリを使用しようとしていますが、問題があります。
type EUpdaterAction = (auFoundCurrentVersion, auFoundUpdateVersion);
type
TUpdater = class
public
procedure loadCurrentVersion();
procedure notify(action: EUpdaterAction);
end;
procedure TUpdater.loadCurrentVersion();
begin
TAsyncCalls.Invoke(procedure
begin
Assert(Windows.GetCurrentThreadId() <> System.MainThreadID);
//Really long code
TAsyncCalls.VCLSync(procedure begin notify(auFoundCurrentVersion); end);
end);
end;
アサーションは失敗します。別のスレッドで実行するために何かをする必要がありますか、それともライブラリで示されている最初の例は実際にはスレッドで実行されませんか?