#asp.net #vb.net #timer
#asp.net #vb.net #таймер
Вопрос:
У меня есть таймер, я нажимаю кнопку, чтобы запустить его, и нажимаю кнопку, чтобы остановить его, но кнопка, используемая для остановки таймера, не работает, я попробовал dispose, stop и enabled = false, все они не сработали.Таймер продолжает отправлять сообщения telegram, даже если я нажал стоп. Интерфейс представляет собой форму aspx.
Dim aTimer As New System.Timers.Timer
Public Function TelegramSendMessage(ByVal apilToken As String, ByVal destID As String, ByVal text As String) As String
Dim a As String = apilToken
Dim urlString As String = "https://api.telegram.org/bot" apilToken "/sendMessage?chat_id=" destID "amp;text=" text
Dim webclient As WebClient = New WebClient()
Return webclient.DownloadString(urlString)
End Function
Private Sub tick(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
TelegramSendMessage(yourtoken,destinationid , "hi")
End Sub
Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
aTimer.AutoReset = True
aTimer.Interval = 60000
AddHandler aTimer.Elapsed, AddressOf tick
aTimer.Enabled = True
End Sub
Protected Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'aTimer.Dispose()
'aTimer.Enabled = False
aTimer.Stop()
End Sub
Комментарии:
1.
Timer
не будет работать, потому что веб-страница не имеет состояния. После отправки страницы клиенту все перерабатывается, включая таймер, поэтому он ничего не делает, пока пользователь находится на странице. Возможно, вы захотите пересмотреть свой дизайн и / или использовать что-то вроде Quartz.net2. Вы можете сохранить время непосредственно перед загрузкой страницы в скрытом поле. При нажатии кнопки получите это время и проанализируйте его в объект DateTime, а затем выясните, сколько времени прошло. Это не красиво.