Таймер не останавливается после нажатия кнопки

#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.net

2. Вы можете сохранить время непосредственно перед загрузкой страницы в скрытом поле. При нажатии кнопки получите это время и проанализируйте его в объект DateTime, а затем выясните, сколько времени прошло. Это не красиво.