定时器在几分钟后停止,为什么会这样?

时间:2013-04-09 18:21:49

标签: .net vb.net timer

我有一个计时器,每5分钟检查一次网页,通过Webbrowser元素进行更改。每当页面改变时(在新订单上),我的计时器将播放.wav文件(哔哔声)。这似乎在前几分钟或有时在前几个小时起作用,但是在没有警告/异常的情况下它会停止检查。

什么可能导致这个问题?

编辑#1

这里是我正在使用的代码:

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    Dim sQuelltext As String = WebBrowser1.DocumentText.ToString
    If Not String.IsNullOrEmpty(sQuelltext) And sQuelltext.Contains("pending") Then
        My.Computer.Audio.Play(soundFile, AudioPlayMode.Background)
    End If
End Sub

1 个答案:

答案 0 :(得分:1)

通常,计时器不会无故停止。

典型的问题可能是:为了避免在最后一次呼叫仍然没有完成时运行定时器(避免意外的赛车问题),在timer_tick的第一行,定时器被禁用,最后一次定时器再次启用。

现在忘记了在几个位置使用了return语句,或者某些代码行可能触发异常。在这种情况下,重新启用计时器将不会被执行,它似乎停止

<强>更新  如果WebBrowser1为Nothing / Disposed,则访问它可能会导致异常。如果发生这种情况,那么您可能会将“无音频”解释为定时器已停止的反馈,而实际触发,但只执行代码行,不会创建异常(然后该方法将被保留)。很少发生,是奇怪的行为,但这可能是一个例子。

因此,您可以在计时器的第一行添加一些内容来切换对象的状态,并在其底部添加另一个第二个对象的切换。

如果没有任何变化则出现问题,如果仅发生第一次切换,则在那里设置断点并按照下一行进行操作。如果逐步调试似乎从一个特定的行跳出来,那么就会出现问题。您可以使用即时窗口来检查下一行部分的内容。一旦找到错误原因

,通常很容易修复