我vb.net服務具有蜱每分鐘左右的定時器,但在執行它會檢查,如果前一個線程完成之前(我不想重複的結果)退出服務其他線程
問題在某些時候,流程只是被掛在流程中,所以我寫道如果流程沒有在5分鐘內完成,它應該繼續執行。
現在我在應用程序中有幾個掛起的線程......沒有任何資源。
所以我的問題是如果我可以殺死這些線程。
Protected Overrides Sub OnStart(ByVal args() As String)
EmailTimer = New System.Timers.Timer(50000)
EmailTimer.AutoReset = True
AddHandler EmailTimer.Elapsed, AddressOf CheckNewEmails
EmailTimer.Start()
End Sub
工人代碼:
Private Sub CheckNewEmails(ByVal sender As Object, e As System.Timers.ElapsedEventArgs)
If _workStartTime <> DateTime.MinValue Then
' check how much time has elapsed since work started previously
If DateDiff(DateInterval.Minute, _workStartTime, Now) > 5 Then
_workStartTime = DateTime.MinValue
End If
Else
_workStartTime = DateTime.Now
Dim client As New ImapClient()
client.Connect("imap.gmail.com", 993) 'that line could sleep forever..
End if
_workStartTime = DateTime.Now
End Sub
順便說一句,在你的'else'套'_workStartTime = DateTime.Now'最後一次。我沒有看到它回到'DateTime.MinValue'的位置。如果這是實際的運行代碼,那麼很可能是問題的原因。 –
對不起,它是一個錯字,這是在刪除大量不相關的句子時發生的。它實際上將時間重置爲minValue。 – Ezi