【C#,WPF】処理を待機して時間差で実行(タイマーによる遅延)

【C#,WPF】処理を待機して時間差で実行(タイマーによる遅延)

WPFでコーディングをしていると、「この処理は一定時間待ってから実行したい」という場合があります。そんなときにはタイマーを使用することで、処理に間隔(インターバル)を設定することができます。以下に、タイマーによる遅延を発生させて、処理を時間差で実行する方法を紹介します。

準備

WPFのタイマー実行には、DispatcherTimerクラスを使用します。
DispatcherTimerを使うためには、ソースの先頭に「using System.Windows.Threading;」を追加します。

ソースコード

それでは、サンプルコードを紹介します。
サンプルでは、待機する時間を1秒に設定しています。
処理を遅らせたい箇所に、以下のコードを追加します。

解説

サンプルコードの2行目、DispatcherTimerをnewするタイミングで、Intervalに待機時間を設定しています。
今回は「TimeSpan.FromSeconds」により、待機時間を1秒に設定しました。
続けて3行目の「timer.Start();」によりタイマー処理が開始され、Intervalで設定した時間が経過後に、4行目の「timer.Tick += (s, args) =>」以下にある括弧内処理が実行されます。
括弧内では、まず処理が何度も実行されないように、「timer.Stop()」でタイマーを停止しています。
その後、遅らせて実行したい処理を、括弧の中に書きます。(9行目以降)

まとめ

WPFで処理を遅延実行したいときは、DispatcherTimerというタイマークラスを使用します。
画面更新やデータのやりとりなどで処理が並行するとき、処理タイミングを調整するのに便利です。
また、サンプルでは時間経過後にタイマーを停止していますが、一定間隔ごとに何度も処理を繰り返す場合、タイマーのStopメソッドは書かないようにします。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です