在 Delphi 7 中通过线程加载多个 DLL



我的应用程序将模块(模态形式)分离为 dll。通过应用程序主菜单,我访问这些dll,在表单关闭时调用LoadLibrary和FreeLibrary。 一切正常。

已经创建的新模块使用了一个新的 aproach,他使用其他插件 (dll) 来工作。当我加载此模块时,也会加载这些插件。但这需要时间。

因此,为了防止在此模块打开期间出现这种加载时间,我尝试先前通过线程在我的应用程序初始化中加载这些插件,但我注意到即使在线程中,Windows LoadLibrary 也不会同时执行,我的意思是,在我的应用程序启动后,如果我尝试打开任何模块(除了那个女巫使用这些插件), 它等到线程完成,然后加载模块。

那么,有没有办法使加载库"同时"工作?

加载模块时,系统加载程序使用所谓的加载器锁序列化任务。因此,对LoadLibrary的多个调用无法并行执行。

真正的问题可能是这些 DLL 在加载时执行耗时的工作。加快速度的唯一方法是更改 DLL 以推迟该工作。

最新更新