【WPF練習13】図形描画と定期処理(6/7)
プロジェクトタイプ | C# WPFアプリケーション※ |
---|---|
プロジェクト名 | T10a |
ソリューション名 | PET10 |
ターゲットフレームワーク | .NET 6.0 (長期的なサポート) |
※ 「WPFアプリ(.NET Framework)」ではないので注意せよ!
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業については準備を参照せよ.
13-6. WPFにおける定期処理
次にWPFにおける定期処理,つまり 一定時間おきに同じ処理を繰り返す 方法を紹介しよう. このためには DispatcherTimer を用いる.これはボタンのような部品ではなくコードビハインド上で用いるクラスである. このクラスはいくつかのメソッドやプロパティを持つが特に重要なものを_に示す.
名前 | 型 | 備考 |
---|---|---|
.Start() メソッド | - | 定期処理を開始する. |
.Stop() メソッド | - | 定期処理を停止する. |
.Intervalプロパティ | TimeSpan構造体1 | 処理を行う間隔を指定する. |
.Tickイベント | イベントハンドラ | 行う処理内容. |
.IsEnabledプロパティ | bool | 定期処理が実行中であるかどうか(実行中の場合はtrue ). |
コード内でDispatcherTimer
クラスのインスタンスを作成し,.Tick
イベントに処理内容を設定して.Start()
メソッドを呼び出せば
処理が開始される.この処理は以前に説明したTask.Run()
メソッドなどによる非同期処理とは異なりメインスレッドで実行されるので,部品の操作なども直接行うことが可能である.
今回はこれを試すため,リスト13-5-5で追加したラベルlabel1
の文言を一定時間おきに変更することを試みてみよう.
まずMainWindow.xaml.cs
ファイルの冒頭に_に示すusingディレクティブを追記する.
|
|
そしてMainWindow
クラスに_に示す内容を追記しよう.
Timer_Tick()
メソッドの定義は,11行目の+=
を打ち込んだ後に
タブキーを押せば生成される ので,その中に19~23行目の内容を追記しよう.
|
|
ここまで書けたら起動してみよう._に示すようにラベルの文言が
定期的に更新されて,デジタル時計のような表示が作られていることが分かるだろう.
次節ではこのDispatcherTimer
を応用して,キャンバス内の図形をアニメーションさせることを試みる .