当 dwsExprs 添加到 DLL 时,他的终结部分会冻结。Actaully TdwsGuardianThread.Finalize 被冻结在 Guardian.WaitFor 线上。
为了演示这个问题,我制作了一个示例 DLL,它是空的,只包含 dwsCript。我还制作了一个测试应用程序,加载 DLL 并立即释放它。如上所述,在退出应用程序时冻结(在 Guardian.WaitFor 上放置一个断点以查看它。
示例 DLL:
library DlltestDll;
uses
dwsExprs;
{$R *.res}
begin
end.
示例应用:
program DllTest;
{$APPTYPE CONSOLE}
{$R *.res}
uses
Windows;
var
HDll : HMODULE;
begin
HDll := LoadLibrary('DllTestDll.dll');
FreeLibrary(HDll);
end.
我正在使用 5 月 26 日从 SVN 存储库中提取的 XE4 和 DWScript。
任何帮助表示赞赏。