検索すれば出てきますが探すのも面倒な時の自分用備忘録な記事です。
全てMVVMなWPFを用いて自分で動作確認をやった内容です。
例外が発生した場所を特定する
例外をキャッチした場所で
StackTraceのGetFramesはスタック トレース内のすべてのスタック フレームのコピーを返します。
それをforeachで回して以下の情報を取り出します。
- GetFileName:実行しているファイル名
- GetMethod:呼び出し先メソッド(非同期メソッドなどではMoveNextを取得する)
- GetFileLineNumber:例外が発生した行
上記例では私が以前記事にしたログ出力プログラムでテキストフィアルにログを書き込みます。
とりあえずは例外が発生したファイルと場所が分かれば不具合は追いかけやすいと思います。
マウスカーソルの状態を変える
ちょっと前に指摘されたのですがデータベースアクセス時、時間がかかると終わったタイミングがわかりにくいとの事でした。(確かに!)
そして検索すると幾つかの手法が出てくるのですが、私がやってみて問題ない手法です。
WPFのViewModelから実行してみましたがOKです。
シャットダウンを検出
コンストラクタで
ユーザーがシステムからログオフしようとした場合、またはシステムをシャットダウンしようとした場合に発生するイベントにメソッドを追加。
追加したメソッドの引数SessionEndingEventArgsのReasonがSessionEndReasons列挙型のどれかで判断できます。
SessionEndReasons列挙型はLogoffとSystemShutdownのみでありLogoffは数値だと1、SystemShutdownは2になります。
Encoding.GetEncodingで例外が出る時
コンストラクタなどに1行追加。
0 件のコメント:
コメントを投稿