Все, у меня есть объект Custom, который я написал с использованием VB.NET (.net 2.0).Объект создает свой собственный объект threading.timer и выполняет ряд фоновых процессов, включая периодический опрос базы данных оракула и доставку электронной почты через smtp в соответствии с данными, обнаруженными в базе данных.Ниже приведен код, реализованный в классе обслуживания Windows
Public Class IncidentManagerService
'Fakes
Private _fakeRepoFactory As IRepoFactory
Private _incidentRepo As FakeIncidentRepo
Private _incidentDefinitionRepo As FakeIncidentDefinitionRepo
Private _incManager As IncidentManager.Session
'Real
Private _started As Boolean = False
Private _repoFactory As New NHibernateRepoFactory
Private _psalertsEventRepo As IPsalertsEventRepo = _repoFactory.GetPsalertsEventRepo()
Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.
If Not _started Then
Startup()
_started = True
End If
End Sub
Protected Overrides Sub OnStop()
'Tear down class variables in order to ensure the service stops cleanly
_incManager.Dispose()
_incidentDefinitionRepo = Nothing
_incidentRepo = Nothing
_fakeRepoFactory = Nothing
_repoFactory = Nothing
End Sub
Private Sub Startup()
Dim incidents As IList(Of Incident) = Nothing
Dim incidentFactory As New IncidentFactory
incidents = IncidentFactory.GetTwoFakeIncidents
_repoFactory = New NHibernateRepoFactory
_fakeRepoFactory = New FakeRepoFactory(incidents)
_incidentRepo = _fakeRepoFactory.GetIncidentRepo
_incidentDefinitionRepo = _fakeRepoFactory.GetIncidentDefinitionRepo
'Start an incident manager session
_incManager = New IncidentManager.Session(_incidentRepo, _incidentDefinitionRepo, _psalertsEventRepo)
_incManager.Start()
End Sub
End Class
. После небольшого количества экспериментов я пришел к приведенному выше коду в методе OnStart.Вся функциональность прошла тестирование при развертывании из VS2005 на моем компьютере разработки, однако при развертывании на истинном целевом компьютере служба не запускается и отвечает следующим сообщением:
"Служба на локальном компьютере запускается, а затем останавливается... "
Правильно ли я поступаю?Если нет, то как мне лучше реализовать свой диспетчер инцидентов в рамках класса обслуживания Windows.Кажется бессмысленным реализовывать таймер для менеджера по инцидентам, потому что он уже реализует свой собственный таймер ...
Любая помощь очень ценится.
С уважением
Пол Дж.