[C#][WPF]学習メモ(その2)~タイマ~

業務ツール作成にC#を触り始めたので、学習した内容をひとまずスクラップしていきます。

タイマ

C#のタイマは種類もあるし、デリゲートも理解できないし等々困っていたところ、下記のサイトにたどり着いてすっきりしました。

参考URL:

  1. https://takachan.hatenablog.com/entry/2017/09/09/225342

こんなにわかりやすい解説があっただろうか。

私の場合、業務ツールとして使う分には正確性が必要ないので、
DispatcherTimerをメインで使っています。
どうしても精度が欲しいときだけ、Timersの方を活用することに。

自分なりのテンプレート:

DispatchTimer

private DispatcherTimer _Timer;
private const int timer_Tick_msec = 100;

private void _Timer_Setup()
{
    this._Timer = new DispatcherTimer
    {
        Interval = TimeSpan.FromMilliseconds(timer_Tick_msec)
    };
    this._Timer.Tick += (sender, e) =>
    {
        //処理or関数呼び出し
    };
    _Timer.Start();
}

Timers

private Timer _Timer;
private const int timer_Elapsed_msec = 100;

private void _Timer_Setup()
{
    this._Timer = new Timer(timer_Elapsed_msec);
    this._Timer.Elapsed += (sender, e) =>
    {
        try
        {
            timer.Stop(); // もしくは timer.Enabled = false;
            // 処理
        }
        finally
        {
            timer.Start(); // もしくは timer.Enabled = true;
        }
    };
}

処理スレッドからUIスレッドを操作するから、例外が発生する?

まだよくわかっていませんが、例外が発生するらしいです。

関連投稿:

[C#][WPF]学習メモ(その1)~イベント~

コメント

Japanese
タイトルとURLをコピーしました