2013-04-09 113 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是沒什麼/棄置,然後訪問它可能會導致異常。如果發生這種情況,那麼你可以解釋'沒有音頻'和反饋,即定時器已經停止,但它實際上是觸發的,但是隻有代碼行被執行,不會產生異常(然後方法將被保留)。很少發生,是奇怪的行爲,但這可能是一種情況。

因此,您可以在計時器的第一行添加某件事物來切換對象的狀態,並在其底部另一個對象的切換。

如果沒有任何變化,那麼有些事情是錯誤的,如果只有第一次切換髮生,那麼在那裏設置一個斷點並遵循下一行。如果逐步調試似乎從一條特定線路跳出,那麼出現問題。您可以使用即時窗口檢查下一行的部分內容。通常很容易修復,只要你找到了錯誤的原因