我正在从事.NET 3.5应用程序的维护工作。在应用程序启动期间,将从工作目录中读取许多字体并将其注册到Windows中。我们使用pinvoke调用每个字体文件的AddFontResource(string lpFileName) (Gdi32.dll)。
代码一直都很快,直到我升级到Win10周年纪念更新(在此之前,Win10没有问题)。现在一次调用可能需要半秒,这使得启动时间增加了90秒。
你知道是什么导致了这个问题吗?以及如何修复它?
发布于 2017-03-17 02:13:54
我也观察到了这个问题,但在我们的例子中,我找到了一个解决方案:调用AddFontResourceEx()。
我们代码中的完整更改是:
// from this
AddFontResource(pFont);
// to this
AddFontResourceEx(pFont, FR_PRIVATE, 0);这至少解决了我个人测试过的一台机器的速度慢的问题。
发布于 2016-10-06 00:26:34
Windows 10周年纪念更新破坏了AddFontResource和RemoveFontResource API的性能。我们现在正在PortableApps.com处理它的余波。在应用周年纪念更新后,这只是Windows10的一个问题。这是如此糟糕,我的旧的缓慢华硕T100可转换运行代码从USB驱动器比我的i7台式机从内部固态硬盘。
https://stackoverflow.com/questions/39257243
复制相似问题