我正在维护.net 3.5应用程序。在应用程序启动期间,会从工作目录中读取许多字体并在Windows中注册。我们对每个字体文件使用pinvoke调用AddFontResource(string lpFileName)(gdi32.dll)。
代码一直很快,直到我升级到win10周年更新(在此之前,win10没有问题)。现在,一个调用可能需要半秒钟,这使得启动时间增加了90秒。
知道是什么导致了这个问题吗?怎么解决呢?

最佳答案

我也观察到了这个问题,但是在我们的例子中,我找到了一个解决方案:callAddFontResourceEx()
我们代码的全部变化是:

// from this
AddFontResource(pFont);

// to this
AddFontResourceEx(pFont, FR_PRIVATE, 0);

这至少解决了我亲自测试过的一台机器的速度慢的问题。

关于c# - Win10周年更新时AddFontResource()变慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39257243/

10-11 15:48