2013-04-09 112 views
0

我有一个计时器,每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 
+2

你能分享一个代码吗? – outcoldman 2013-04-09 18:25:09

+0

当然!我刚刚编辑了我的上一篇文章,因为我不知道如何将代码粘贴到评论中。 – bibz 2013-04-09 18:47:36

+1

如果没有什么是禁用定时器,我会建议您通过添加一个'ELSE'语句并播放不同的音频调整来调试。或者每次触发Timer时添加某种文件记录。文件记录更好,因为您不必坐下来等待听到定时器触发。即使在Tick事件内部触发运行时错误,Timer也不应禁用自身。 – George 2013-04-09 19:26:55

回答

1

Usualy,计时器不停止工作,没有理由。

典型的问题可能是:为了避免在最后一次调用仍然没有完成的时候运行定时器(避免意外的竞速问题),在timer_tick的第一行中,定时器被禁用,并且在最后定时器被再次启用。

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

更新 如果WebBrowser1是没什么/弃置,然后访问它可能会导致异常。如果发生这种情况,那么你可以解释'没有音频'和反馈,即定时器已经停止,但它实际上是触发的,但是只有代码行被执行,不会产生异常(然后方法将被保留)。很少发生,是奇怪的行为,但这可能是一种情况。

因此,您可以在计时器的第一行添加某件事物来切换对象的状态,并在其底部另一个对象的切换。

如果没有任何变化,那么有些事情是错误的,如果只有第一次切换发生,那么在那里设置一个断点并遵循下一行。如果逐步调试似乎从一条特定线路跳出,那么出现问题。您可以使用即时窗口检查下一行的部分内容。通常很容易修复,只要你找到了错误的原因