WPFアプリにおいてタイマ処理でUIを更新できない場合の対処法


はじめに

本記事は、開発で得た小さなTipsを備忘録として残すことを目的としています。

遭遇した問題

WPFアプリにおいてこちらのタイマクラスを使っている。タイマ時間経過時に実行されるハンドル処理内で、Dispathcerクラスを使ってUI更新をするとUIスレッドにアクセスできず、例外が出てしまう。

対処法

こちらのSystem.Windows.Threading.DispatcherTimerクラスを使えば、タイマ時間経過後の処理は必ずUIスレッドで実施されるため、Dispathcerクラスを使わずとも例外発生せずUI更新できる。
使い方はこちらの記事を参照のこと。

まとめ

遭遇した問題は自分のDispathcerクラスの使い方が不適切で発生している可能性もあるが、タイマ処理内でUI更新処理をすることが初めからわかっている場合は、System.Windows.Threading.DispatcherTimerクラスを使うのが良いと個人的に感じた。