下面是我的DLL代码:
procedure TTaskTest;
begin
TTask.Run(
procedure
begin
Sleep(300);
end);
end;
exports TTaskTest;
在宿主app中调用此方法后,再调用FreeLibrary
会冻结宿主app,调试后发现程序在TLightweightEvent.WaitFor
中的if TMonitor.Wait(FLock, Timeout) then
处冻结,但调试器无法单步执行到TMonitor.Wait
,如何解决?
1条答案
按热度按时间cetgtptt1#
已报告此问题(RSP-13742 Problem with ITask, IFuture inside DLL)。
它以“按预期工作”结束,并附有一条备注:
下面是Embarcadero的一个示例,如何处理它:
另一种方法是在加载库时创建线程池,并添加一个释放过程,在调用
FreeLibrary
之前调用该过程。