为什么在处理ASP.NET Timer Tick事件时我的索引变量不会递增?

时间:2015-12-22 16:43:24

标签: asp.net vb.net timer

这是一个有趣的问题。我有一个ASP.NET计时器(Timer1),它应该递增一个整数变量,用于跟踪菜单中的哪个项目被选中。看看Tick事件处理程序。

'Menu_RightSide.Items(TimerMenuInde​​x).Selected = True`

Protected Sub Timer1_Tick(sender As Object, e As System.EventArgs) Handles Timer1.Tick

    Select Case TimerMenuIndex
            Case 0
                bindDataToChart_locationChrono() 
                TimerMenuIndex += 1
            Case 1
                BindCurrentProgressDataToChart() 
                TimerMenuIndex += 1
            Case 2
                bindDBDataToChart()                   
                TimerMenuIndex += 1
            Case Else
                'Do Something else         
    End Select
End Sub

这似乎应该是相对简单的逻辑。我想要的是TimerMenuIndex变量在调用Tick事件处理函数时递增1。但是,出于某种原因,它不会增加。我应该提到TimerMenuIndex是一个全局变量。我知道Timer控件是基于AJAX的,所以当Timer刷新页面时,它不应该调用Page_Load函数。我想不出有什么理由不起作用。我可能会遗漏一些非常明显的东西。有什么想法吗?

更新:以下是与此功能相关的Page_Load代码:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
     Menu_RightSide.Items(TimerMenuIndex).Selected = True
End Sub

1 个答案:

答案 0 :(得分:0)

发生的事情是变量在tick事件后重置为0

您需要声明Shared,这将使变量保持其值,并且

Shared TimerMenuIndex As Integer = 0

I created a sample application for you to try