AddFontResource()在Win10周年更新中缓慢
本文关键字:更新 缓慢 周年 Win10 AddFontResource | 更新日期: 2023-09-27 18:05:14
我正在维护。net 3.5应用程序。在应用程序启动期间,从工作目录中读取许多字体并在Windows中注册。对于每个字体文件,我们使用对AddFontResource(string lpFileName)
(Gdi32.dll)的pinvoke调用。
代码一直很快,直到我升级到Win10周年更新(在那之前,Win10没有问题)。现在一个呼叫需要半秒,这增加了90秒的启动时间。
你知道是什么导致这个问题吗?如何解决这个问题?
Windows 10周年更新破坏了AddFontResource和RemoveFontResource api的性能。我们现在正在PortableApps.com处理此事。只有在Windows 10应用周年更新后才会出现这个问题。
我也观察到了这个问题,但在我们的情况下,我找到了一个解决方案:调用AddFontResourceEx()。
我们代码的全部变化是:
// from this
AddFontResource(pFont);
// to this
AddFontResourceEx(pFont, FR_PRIVATE, 0);
这至少解决了我亲自测试过的一台机器运行缓慢的问题。