我基本上想要的是开始异步调用 http://andy.jgknet.de/blog/bugfix-units/asynccalls-29-asynchronous-function-calls/并继续加载我的代码。我的接口部分消耗了大量时间(600+毫秒),我想在独立线程中加载此代码。
我尝试过使用AsyncCall
做这样的事情:
procedure Load;
begin
...
end;
initialization
AsyncCall(@Load, []); // or LocalAsyncCall(@Load)
然而,这Load
过程实际上在主线程中启动,而不是在新创建的线程中启动。我怎样才能强制Load
过程要加载到除MainThread
?
我可以创造TThread
and Execute
但我想强迫AsyncCall
or LocalAsyncCall
或任何来自AsyncCall
库来工作。
感谢您的帮助。
你尝试过这样的事情吗?:
procedure Load;
begin
if GetCurrentThreadId <> MainThreadID then
Beep;
end;
var a: IAsyncCall;
initialization
a := AsyncCall(@Load, []);
a.ForceDifferentThread;
ForceDifferentThread() 告诉 AsyncCalls 分配的函数必须
不会在当前线程中执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)