|
分類:[.NET 全般]
VB.NETでタイマー処理を行っています。 テキストボックスに入力した値の時間のみ時間を計るようにしたのですが 今の段階では入力した時間になったら計測が終了します。 それを停止ボタンが押されるまで何回も計測させたいのですが myTime.intCountを初期化すればいいのでしょうか?
Private Sub Timer1_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timer1.Tick Dim tsTime As TimeSpan '経過時間 Dim intNowSec As Integer
'発生した割り込みのカウンター myTime.intCount += 1
'1/1000秒を取得 intNowSec = Now.Millisecond '1/1000秒のオーバーフロー発生 If myTime.intBackSec > intNowSec Then 'オーバーフローの回数 myTime.intSec += 1 End If '前の1/1000秒を記憶 myTime.intBackSec = intNowSec
'現在の1/1000秒の時刻 + オーバーフロー補正 myTime.intTime(myTime.intCount) = myTime.intSec * 1000 + Now.Millisecond
'現在の時刻からスタート時刻を引く tsTime = DateTime.Now.Subtract(myTime.timeStart)
'現在の時刻の表示 TextBox2.Text = "現在、" & Format(tsTime.Minutes, "00") & "分" & Format(tsTime.Seconds, "00") & "秒経過中・・・・"
End Sub '------------------ '計測時間用のタイマー '------------------ Private Sub Timer2_Tick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timer2.Tick
Dim tsTime As TimeSpan '経過時間 Dim lngSum As Long 'トータルの経過時間 Dim intMax As Integer = 0 Dim IntMini As Integer = 0 Dim intSpan As Integer Timer2.Enabled = False Timer1.Enabled = False
'スタート時間からの経過時間 tsTime = DateTime.Now.Subtract(myTime.timeStart)
'経過時間の表示 TextBox2.Text = Format(tsTime.Seconds, "00")
'精密タイマーの各割り込みスパンの計算 For i As Integer = 1 To myTime.intCount - 1 '各スパンを全て足す intSpan = (myTime.intTime(i + 1) - myTime.intTime(i)) lngSum = lngSum + CLng(intSpan) If intMax = 0 And IntMini = 0 Then '初回の処理 intMax = intSpan IntMini = intSpan ElseIf IntMini > intSpan Then 'MAXの更新 IntMini = intSpan ElseIf intMax < intSpan Then 'Miniの更新 intMax = intSpan End If Next
End Sub
|