以前、WPFでWindowsアプリケーションを開発していた時に、
『リモートデスクトップ接続するとアプリケーションが異常終了する』というバグに遭遇した。
アプリケーションを起動した状態のマシンにリモートで繋ぐと、
異常終了してしまう。
実際の運用環境ではリモートデスクトップで繋ぐことは無いので
割と優先度は低かったけど
100%再現するので何かしら明確な原因はあるだろうと思っていた。
で、結局原因は何だったのかというと、
『Win8以降では、リモートデスクトップ接続すると
WPFのControlでUnloaded~Loadedイベントが発生する』
(リモートデスクトップでの画面サイズ変更に対応するため)
ということだった。
当該アプリではLoadedイベント内で
内部データを色々と初期化していたが
当然起動時のみ実行される前提で作っていたので
2回実行された影響で例外が発生していた、と。
#具体的にはDictionaryに重複登録してエラー
Loadedイベント内で初期化するのはよくやるので
注意しておきたい。
#初期化処理をまとめて1回だけ実行されるようにするとか
複数回実行されても問題無いようにするとか対策は容易な筈