私は最終的に私の元の問題への解決策をコーディングすることを約束しました。
私のソリューションは、出力ウィンドウに記録します(もともとはジョンによって提案された)カスタムTraceListener
を使用しています。エラーが発生すると、出力ウィンドウが自動的に表示され、フォアグラウンドで購入されます。
は、ここに私のTraceListener
です:
public class ErrorLogTraceListener : TraceListener
{
public override void Write(string message)
{
...
}
public override void WriteLine(string message)
{
...
}
}
TraceListener
はたSystem.Diagnosticsで定義されています。
カスタムTraceListener
には、使用するシステムにフックする必要があります。これを行う公式の方法は、レジストリに何かを設定してから、App.config
ファイルを使用してTraceListener
を設定することです。
ErrorLogTraceListener listener = new ErrorLogTraceListener();
PresentationTraceSources.Refresh();
PresentationTraceSources.DataBindingSource.Listeners.Add(listener);
PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Error;
PresentationTraceSources
もSystem.Diagnostics
に定義されています。
しかし、私はプログラム的にこれを行うにははるかに簡単な方法があることがわかりました。トレースソースの詳細については
はマイクHillbergのblogを参照してください。
ビーStollnitzは彼女blog上のいくつかの有用な情報を持っています。
デバッガが接続されているときにエラーが発生することがわかりました。デバッガが接続されていない場合、WPFは最初にエラーを出力しません。(?) 誰かがこれを経験していますか? – pauldoo
詳細な調査では、デバッガが接続されたときに変更されるフラッシュ動作のみです。 'System.Diagnostics.Trace.AutoFlush = true; 'を使用して、私たちの問題を修正しました。 – pauldoo
例:http://www.jasonbock.net/jb/Default.aspx?blog=entry.0f221e047de740ee90722b248933a28d – Thomas