業務ツール作成に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スレッドを操作するから、例外が発生する?
まだよくわかっていませんが、例外が発生するらしいです。


コメント