當您使用超過100磅值的字體時,WPF 應用程式會懸掛
本文可協助您解決應用程式變得無回應及無限期懸掛的問題。
適用于: .NET Framework 3.5 Service Pack 1
原始 KB 編號: 2712383
徵狀
您有 Microsoft .NET 3.5 Window Presentation Framework (WPF) 應用程式,其使用大型字元和/或字型。 應用程式會變成無回應且無限期懸掛。
原因
Windows Presentation Framework UI 執行緒已進入一個稱為組合鎖定的臨界區。 當 UI 執行緒持有此鎖定時,它必須同步處理與 Windows Presentation Framework render 執行緒的通訊。 當呈現執行緒需要輸入組合鎖定時,會處理大型字元。 因為 UI 執行緒有組合鎖定,所以 render 執行緒會等候它,執行緒也會變成鎖死。
我們已確認這是 Microsoft .NET 3.5 Framework 中的錯誤。
解決方案
此 bug 已在 Microsoft .NET 4.0 Framework 中修復。 若要解決此錯誤,請避免使用較大的字元或字型,或將您的應用程式升級為以 Microsoft .NET 4.0 Framework 為目標。
其他相關資訊
在上述的情況下,我們會定義大型,以表示具有有效大小為 100 pt 或以上的字元,100 pt 為 bug 閾值。 有效是指將字型大小乘以任何轉換的字型大小。 臨界值會考慮任何可能會生效的轉換,以及電腦的 DPI 設定的影響。 例如,如果您在 RenderTransform 的範圍內使用60點的 Arial 字型,其因數是2,則有效大小是 120 pt,這超過 100-pt 閾值限制。