2016-08-31 4 views
1

Ich arbeite mit der Wartung von .NET 3.5-Anwendung. Beim Start der Anwendung werden eine Reihe von Schriftarten aus dem Arbeitsverzeichnis gelesen und in Windows registriert. Wir verwenden eine pinvoke Aufrufe an AddFontResource(string lpFileName) (Gdi32.dll) für jede Schriftart-Datei.AddFontResource() langsam auf Win10 Anniversary Update

Der Code war immer schnell, das ist, bis ich auf Win10 Anniversary Update (vorher gab es keine Probleme mit Win10) aktualisiert. Jetzt kann ein Anruf eine halbe Sekunde dauern, was die Startzeit um 90 Sekunden verlängert.

Irgendeine Idee, was das Problem verursachen kann? Und wie man es repariert?

+1

Die Methode, die ich untersuchen würde, besteht darin, ein brandneues Projekt zu erstellen, das * nur * AddFontResource aufruft und prüft, ob es unter Windows 10 noch langsam ist. Probieren Sie es mit genau den gleichen Schriften aus, die Sie laden Anwendung und versuchen Sie es dann für verschiedene Schriftarten. Sehen Sie, ob es in beiden Fällen langsam ist. Versuchen Sie, das Problem einzugrenzen. –

Antwort

0

Ich habe auch dieses Problem beobachtet, aber in unserem Fall fand ich eine Lösung: Call AddFontResourceEx().

Die vollständige Änderung in unserem Code war:

// from this 
AddFontResource(pFont); 

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

Dies löste das Problem Langsamkeit in mindestens eine der Maschinen habe ich persönlich getestet.

+0

Einige Optimierungen waren notwendig, aber die obige Methode funktionierte perfekt. private const uint FR_PRIVATE = 0x10; [DllImport("gdi32.dll")] static extern int AddFontResourceEx(string lpszFilename, uint fl, IntPtr pdv); AddFontResourceEx("filename", FR_PRIVATE, IntPtr.Zero);

2

Windows 10-Jubiläumsupdate zerstörte die Leistung der AddFontResource- und RemoveFontResource-APIs. Wir haben es nun mit Fallout auf PortableApps.com zu tun. Es ist nur ein Problem unter Windows 10, nachdem das Jubiläumsupdate angewendet wurde. Es ist so schlimm, dass mein altes, langsames ASUS T100-Convertible Code von einem USB-Laufwerk schneller ausführt als mein i7-Desktop von einer internen SSD.

+0

Ok. Immer gut zu wissen, dass es nicht nur auf meiner Maschine ist, das ist ein Problem, danke für die Info John und @Marc Fauser. –

+0

Wenn Sie eine konsistente Repro für dieses Problem erhalten können, haben Sie es an Microsoft gemeldet? Es bringt nichts, in der Stille zu leiden. –

+0

Ich würde es gerne melden, wenn Microsoft es nicht unmöglich gemacht hätte, etwas zu melden. Ich brauchte zwei Versuche, um eine Reparatur für einen kaputten Controller von Microsoft zu bekommen, mit dem ersten Anruf, der mich auf Zubehör für etwas antrieb, das ich nicht einmal besaß. –

Verwandte Themen