2012-01-30 18 views
6

特定のクライアントマシンでクラッシュするWPFアプリケーションにはいくつかの厄介な問題がありました。起動時にWPFウィンドウがクラッシュする、または起動してもハングしてコンテンツがレンダリングされない

私は同僚の開発者の健全性を維持するために、ここに問題点や解決策を掲載しています。トラブルシューティングは容易ではありませんでした。

これらの問題はどちらも古典的なものです。「自分のマシンで動作しますが、問題はありません」という問題です。

  1. 起動時にWPFアプリケーションがクラッシュします。エラーはありません。理由はありません。
  2. WPFアプリケーションが起動し、ウィンドウの境界線が表示されますが、内容はペイントされません。それはちょうど( "透明な窓"として報告される)ハングするクラッシュレポート(マシンはWindows XPだった)をトリガーする閉じるをクリックします。

答えて

17

1)起動時にWPFアプリケーションがクラッシュします。エラーはありません。理由はありません。

実際にエラーを最初に見つけ出すための主要なトラブルシューティング手順は、app.xamlにエラー処理を追加することです。あなたのApp.xamlヘッダーで

、追加します。

<Application DispatcherUnhandledException="App_DispatcherUnhandledException" /> 

とあなたのApp.xaml.csでは、のようなものを追加:この追加のデバッグを追加した後

void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs args) 
    { 
     log.Fatal("An unexpected application exception occurred", args.Exception); 

     MessageBox.Show("An unexpected exception has occurred. Shutting down the application. Please check the log file for more details."); 

     // Prevent default unhandled exception processing 
     args.Handled = true; 

     Environment.Exit(0); 
    } 

を、私はエラーをキャッチ:

System.TypeInitializationException: 'System.Windows.Media.FontFamily'の型初期化子が例外をスローしました。 ---> System.ArgumentException:パスに不正な文字があります。

さらなる研究、クライアント・マシンは、Microsoft \ Windows NTの\ \

HKEY_LOCAL_MACHINE \ソフトウェアのレジストリのフォントエントリに続く「◻」文字を持っていたソリューションにつながった、とコーヒーを、グーグルCurrentVersion \ Fonts

この不正な文字を削除することで問題は解決しました。

No idea how this got into the registry

キャリア節約ブログ記事"How to Crash every WPF application"を参照してください。

2)WPFアプリケーションが起動し、ウィンドウの境界線が表示されますが、内容はペイントされません。それはちょうど( "透明な窓"として報告される)ハングする

これは別のフォント関連の問題でした。私は最初、WPFがフォントをサイズ16(?)でレンダリングするのを拒否したかのように、クライアントサイトの1台のマシンで動作していないWindow.xamlのfontSize = "16"に煮詰めました。私はフォントサイズを指定するコードを削除し、それは働いた...それが判明したように、それは私のログインプロファイルのためだけに働いた。同僚のログインプロファイルが同じマシンマシンで失敗し続けました。私は文字通り自分自身としてログインし、正常に実行し、ログアウトし、彼自身としてログインして実行し、「透明な吊り窓」で失敗するでしょう。同じマシン、同じアクセス許可。

最後の手段として、私は彼としてログインし、彼はカスタムテーマを拡大フォントで設定していたことに気付きました。私はWindowsのテーマを古典的なテーマに戻しました...そして、これで問題は解決しました(?!?)。この問題はフォントにも関係しているようですが、絶対的な根本原因は特定されていません。一時的な回避策は、テーマを標準テーマに戻すことです。

関連する問題