asp.net中的计时器每两分钟执行一次代码两次

时间:2014-03-17 14:45:14

标签: asp.net vb.net timer

我有一个按钮,当它点击它时会启动一个存储过程来执行一个sql作业。在按钮我有一个方法。在方法中,我想代码等待2分钟并运行一个sql查询来获取状态,如果status = 4或status = 7然后停止,但如果状态不是4或7,那么相同的代码在两分钟内再次运行,但只有两次。我怎样才能在vb.net网站上实现这一点?以下是我到目前为止所尝试的但是我遇到了错误,我以前从未做过一次。

   Dim myTimer As New System.Timers.Timer(2 * 60 * 1000)
   Private Sub DisableButton()
      btnBertFish.Enabled = False
      myTimer.Elapsed = New ElapsedEventHandler(AddressOf (OnTimedEvent()))
   End Sub
   Private Sub OnTimedEvent()
   'Some code that need to execute
   End Sub

所以,这些是我得到的错误:Public Event Elapsed(发件人作为对象,e作为System.Timers.ElapsedEventArgs)是一个事件,不能直接调用。使用'RaiseEvent'语句来举起一个事件。

我看过教程和System.Timers,但我无法弄清楚如何开始。有人可以帮助我或指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

 Dim myTimer As New System.Timers.Timer()
 myTimer .AutoReset = True
 myTimer .Interval = 60 * 1000 '1 minute
 AddHandler myTimer.Elapsed, AddressOf OnTimedEvent
 dim i as integer=0
 Private Sub DisableButton()
    btnBertFish.Enabled = False
    myTimer.Elapsed = New ElapsedEventHandler(AddressOf (OnTimedEvent()))
 End Sub   
 Private Sub OnTimedEvent()
 i += 1
 if i= 2 then
 ' Run your code
 'i=2 means the second tick of the timer since i value is increased in each 1 minute
 End IF
 End Sub

在需要延迟的情况下添加myTimer.Start(),停止计时器或重置使用计时器块添加代码,但我不清楚thestatus是什么:

 if theStatus = 4 or theStatus = 7 then
 myTimer.Stop()
 else
 i=0
 End If