Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AddFontResource()在Win10周年纪念更新时运行缓慢_C#_Windows_Pinvoke - Fatal编程技术网

C# AddFontResource()在Win10周年纪念更新时运行缓慢

C# AddFontResource()在Win10周年纪念更新时运行缓慢,c#,windows,pinvoke,C#,Windows,Pinvoke,我正在维护.NET3.5应用程序。在应用程序启动过程中,从工作目录读取大量字体并在Windows中注册。对于每个字体文件,我们使用pinvoke调用AddFontResource(string lpFileName)(Gdi32.dll) 代码一直很快,直到我升级到Win10周年更新(在此之前,Win10没有问题)。现在,一个呼叫可能需要半秒钟,这将启动时间增加了90秒 知道是什么导致了这个问题吗?如何修复它?Windows 10周年更新破坏了AddFontResource和RemoveFont

我正在维护.NET3.5应用程序。在应用程序启动过程中,从工作目录读取大量字体并在Windows中注册。对于每个字体文件,我们使用pinvoke调用
AddFontResource(string lpFileName)
(Gdi32.dll)

代码一直很快,直到我升级到Win10周年更新(在此之前,Win10没有问题)。现在,一个呼叫可能需要半秒钟,这将启动时间增加了90秒


知道是什么导致了这个问题吗?如何修复它?

Windows 10周年更新破坏了AddFontResource和RemoveFontResource API的性能。我们正在PortableApps.com上处理由此产生的辐射。这只是应用周年纪念更新后Windows 10上的一个问题。糟糕的是,我的旧款慢速华硕T100敞篷车从USB驱动器运行代码的速度比我的i7台式机从内部SSD运行代码的速度快。

我也注意到了这个问题,但在我们的案例中,我找到了一个解决方案:调用

我们的代码的全部更改是:

// from this
AddFontResource(pFont);

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

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

我要研究的方法是创建一个全新的项目,只调用
addfontsource
,看看它在Windows 10上是否仍然慢。请使用您为应用程序加载的完全相同的字体进行尝试,然后使用不同的字体进行尝试。看看这两种情况是否都很慢。尽量缩小问题的范围。总是很高兴知道它不仅在我的机器上,这是一个问题,感谢John和@Marc Fauser提供的信息。如果你能得到关于这个问题的一致报告,你有没有向Microsoft报告过?默默忍受没有任何好处。如果微软没有让报告变得不可能,我会很高兴地报告。我花了两次时间从微软那里得到一个坏掉的控制器的修复,第一个代表向我收取一些我甚至没有拥有的配件的费用。需要一些调整,但是上面的方法非常有效<代码>专用const uint FR_private=0x10;[DllImport(“gdi32.dll”)]静态外部输入AddFontResourceEx(字符串lpszFilename,uint fl,IntPtr pdv);AddFontResourceEx(“文件名”,FR_PRIVATE,IntPtr.Zero)