業務ツール作成にC#を触り始めたので、学習した内容をひとまずスクラップしていきます。
タイマ
C#のタイマは種類もあるし、デリゲートも理解できないし等々困っていたところ、下記のサイトにたどり着いてすっきりしました。
参考URL:
- 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スレッドを操作するから、例外が発生する?
まだよくわかっていませんが、例外が発生するらしいです。
コメント