我有一个通过 C++/CLI 使用 C#.NET 2.0 DLL 构建的输入法 (IME) 程序。由于 IME 总是附加到另一个应用程序,因此 C#.NET DLL 似乎无法避免图像地址变基。
尽管我已应用 ngen 创建该 C#.NET 2.0 DLL 的本机映像并将其安装到全局程序集缓存中,但它并没有太大改善,大约 12 秒。低至 9 秒。在缓慢的 PIII 级 PC 上。
因此,我使用了一个小型应用程序,它在启动时加载 C#.NET DLL 引用的所有组件,以“预热”该 DLL 的本机映像。它可以将加载时间加快到 0.5 秒。
然而,它只工作了一段时间。约30分钟。后来,它似乎又“降温”了。
有什么方法可以控制 GAC 或本机图像的行为始终“热”?这完全是图像地址变基问题吗?