我有一个运行长时间操作的模型对象。我试图在线程中运行其中一些操作以保持界面响应,一次下载 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;
断言失败。我是否需要做一些事情让它在单独的线程中运行,或者库中显示的第一个示例实际上并没有在线程中运行?