當您使用超過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 閾值限制。