Это не полный ответ на ваш вопрос, но я хотел опубликовать кусок кода, чтобы комментарий не был хорошим вариантом. Этот класс поможет вам, если вы пытаетесь реализовать обратный отсчет:
Public Class CountdownStopwatch
Inherits Stopwatch
Public Property Period As TimeSpan
Public ReadOnly Property Remaining As TimeSpan
Get
Dim timeRemaining = Period - Elapsed
Return If(timeRemaining > TimeSpan.Zero, timeRemaining, TimeSpan.Zero)
End Get
End Property
Public ReadOnly Property IsExpired As Boolean
Get
Return Elapsed >= Period
End Get
End Property
End Class
В основном это Stopwatch
с дополнительными функциями обратного отсчета. Например, если вы хотите что-то сделать в течение 10 минут, вы можете сделать это:
myCountdownStopwatch.Period = TimeSpan.FromMinutes(10)
myCountDownStopwatch.Restart()
В событии Tick
вашего Timer
вы можете отобразить оставшееся время и запросить пользователя, когда время истекает так:
timeReaminingLabel.Text = myCountdownStopwatch.Remaining.ToString("m\:ss")
If myCountdownStopwatch.IsExpired Then
myTimer.Stop()
myCountdownStopwatch.Stop()
myCountdownStopwatch.Reset()
'Prompt user here.
End If