LoginSignup
14
11

More than 3 years have passed since last update.

【C#】【WPF】リモートデスクトップ接続時の再描画について

Posted at

以前、WPFでWindowsアプリケーションを開発していた時に、
『リモートデスクトップ接続するとアプリケーションが異常終了する』というバグに遭遇した。

アプリケーションを起動した状態のマシンにリモートで繋ぐと、
異常終了してしまう。
実際の運用環境ではリモートデスクトップで繋ぐことは無いので
割と優先度は低かったけど
100%再現するので何かしら明確な原因はあるだろうと思っていた。

で、結局原因は何だったのかというと、
Win8以降では、リモートデスクトップ接続すると
WPFのControlでUnloaded~Loadedイベントが発生する

(リモートデスクトップでの画面サイズ変更に対応するため)
ということだった。

当該アプリではLoadedイベント内で
内部データを色々と初期化していたが
当然起動時のみ実行される前提で作っていたので
2回実行された影響で例外が発生していた、と。
#具体的にはDictionaryに重複登録してエラー

Loadedイベント内で初期化するのはよくやるので
注意しておきたい。
#初期化処理をまとめて1回だけ実行されるようにするとか
 複数回実行されても問題無いようにするとか対策は容易な筈

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11