WPF-Anwendung hängt ab, wenn Sie Schriftarten mit einer Größe von mehr als 100 Pts verwenden
Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem die Anwendung nicht mehr reagiert und unbegrenzt hängen bleibt.
Gilt für: .NET Framework 3.5 Service Pack 1
Ursprüngliche KB-Nummer: 2712383
Problembeschreibung
Sie verfügen über eine Microsoft .NET 3.5 Window Presentation Framework (WPF)-Anwendung, die große Zeichen und/oder Schriftarten verwendet. Die Anwendung reagiert nicht mehr und bleibt unbegrenzt hängen.
Ursache
Der Windows Presentation Framework-UI-Thread hat einen kritischen Abschnitt namens Kompositionssperre eingegeben. Während der UI-Thread diese Sperre hält, muss er die Kommunikation mit dem Windows Presentation Framework-Renderthread synchronisieren. Der Renderthread verarbeitet ein großes Zeichen, wenn er in die Kompositionssperre eintreten muss. Da der UI-Thread über die Kompositionssperre verfügt, wartet der Renderthread darauf, und die Threads werden blockiert.
Wir haben bestätigt, dass dies ein Fehler im Microsoft .NET 3.5 Framework ist.
Lösung
Dieser Fehler wurde in Microsoft .NET 4.0 Framework behoben. Um diesen Fehler zu umgehen, vermeiden Sie die Verwendung großer Zeichen oder Schriftarten, oder aktualisieren Sie Ihre Anwendung so, dass sie auf Microsoft .NET 4.0 Framework ausgerichtet ist.
Weitere Informationen
Im obigen Symptom definieren wir "Groß", um ein Zeichen mit einer effektiven Größe von 100 pt oder höher zu meinen, wobei 100 pt der Fehlerschwellenwert ist. Effektiv bezieht sich auf das Multiplizieren des Schriftgrads mit allen Transformationen. Der Schwellenwert berücksichtigt alle möglicherweise wirksamen Transformationen und die Auswirkungen der DPI-Einstellung Ihres Computers. Wenn Sie z. B. eine Arial-Schriftart mit 60 Punkt im Bereich eines RenderTransform-Objekts verwenden, das um den Faktor 2 skaliert wird, beträgt die effektive Größe 120 pt und überschreitet den Schwellenwert von 100 Pt.