C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Forms.TimerをStopした時の残り時間


(過去ログ 130 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■76852 / inTopicNo.1)  Forms.TimerをStopした時の残り時間
  
□投稿者/ マルネコ (1回)-(2015/08/24(Mon) 15:59:39)

分類:[VB.NET/VB2005 以降] 

(VB2010)
Windows.Forms.Timerについて質問です。
TimerをStart()後、ボタン操作等でTimerのStop()を行った時、
発生する予定だったTickイベントまでの残り時間を知る方法はありますか?
別途StopWatch等で計測する必要がありますか?
IntervalはあくまでもTick発生の間隔ですよね?
引用返信 編集キー/
■76853 / inTopicNo.2)  Re[1]: Forms.TimerをStopした時の残り時間
□投稿者/ shu (769回)-(2015/08/24(Mon) 16:16:02)
2015/08/24(Mon) 16:17:30 編集(投稿者)

No76852 (マルネコ さん) に返信
Startで時間を取得して、次のTick時間を算出しておいて
Stopでまた時間を取得して、その差を出せばよいのではないでしょうか?

本当にやりたいことは何でしょう?
引用返信 編集キー/
■76855 / inTopicNo.3)  Re[1]: Forms.TimerをStopした時の残り時間
□投稿者/ 魔界の仮面弁士 (457回)-(2015/08/24(Mon) 16:28:15)
No76852 (マルネコ さん) に返信
> IntervalはあくまでもTick発生の間隔ですよね?

いいえ。必ずしも Interval の間隔を維持するとは限りません。

Tickは「Interval 以上の時間が経過したあとのアイドル時」に発生します。
時間のかかる処理が行われていた場合などは、Tick の発生が遅れることもあります。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=67466&KLOG=114


> 別途StopWatch等で計測する必要がありますか?

タイマー開始時および Tick 発生時に、日付型のフィールド変数に
  Me.次回予定時間 = Now.AddSeconds(Timer1.Interval / 1000)
などと保存しておけば、残り予想時間を
  残り時間 = Me.次回予定時間 - Now
で求めることができます。ただし上記にも示したように、
メインスレッドにて負荷の高い処理をが行われていた場合などは、
この時刻よりも後の時間に、遅れて実行されることがありえます。
引用返信 編集キー/
■76878 / inTopicNo.4)  Re[2]: Forms.TimerをStopした時の残り時間
□投稿者/ マルネコ (2回)-(2015/08/25(Tue) 11:39:06)
皆さま、回答ありがとうございました。
やはり、Timerとは別に計測が必要なのですね。

>Tickは「Interval 以上の時間が経過したあとのアイドル時」に発生します。
>時間のかかる処理が行われていた場合などは、Tick の発生が遅れることもあります。

上記につき、承知しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -