我有一個Windows服務項目,旨在監視電子郵件帳戶,並在某些電子郵件到達時向SQL Server數據庫創建條目。這是一個類似WinForms程序的重寫,它運行得很好,除了它要求計算機登錄到一個帳戶並且手動啓動程序,我可以通過它作爲服務來避免。從自定義類提高事件
在服務中,我維護一個記錄消息列表 - 基本上只是一個字符串和一個時間戳,指示發生了什麼事情。 (該列表是通過WCF服務共享的,但我認爲這並不重要,至少目前是這樣。)在我的自定義類中,我聲明瞭一個公共事件,並在其他地方提出了該事件。但由於某些原因,RaiseEvent
未在服務中運行。例如:
Public Class TheService
Private WithEvents _pc As ProcessorClass
Public Sub OnStart(ByVal args() As String)
_pc = New ProcessorClass
End Sub
...
Private Sub _pc_HandleEvent(LogMessage As String) Handles _pc.CustomEvent
'do something with the LogMessage
End Sub
End Class
Public Class ProcessorClass
Public Event CustomEvent(ByVal LogMessage As String)
...
Public Sub Process()
'Do stuff
RaiseEvent CustomEvent("Event raised")
End Sub
End Class
在這種情況下,問題是_pc_HandleEvent
是不是永遠被調用。如果我在一個常規的winform程序中複製這個設置,那麼所有東西都可以像它應該那樣工作我究竟做錯了什麼?我如何獲得服務來處理其他課程引發的事件?