【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メソッドは書かないようにします。

Share

  • Twitter Shareボタン
  • Facebook Shareボタン
  • はてなブックマーク Shareボタン
  • LINE Shareボタン

コメントを残す

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。