簡単なWindowsサービスを作成しました。初めての試みなので、何かおかしなことをしているのかもしれません。とにかく、サービスは自動的に開始するはずですが、そうではありません。起動しますが、エラーを報告せずに自動的に停止します。コンピューターマネージャーウィンドウで手動で起動すると、正常に動作し、停止することはありません...
例外をログに記録しようとしましたが、結果がありません。
これがonStart()コードです。
Private _conn As SqlConnection
Private _connAttemps As Integer = 0
Protected Overrides Sub OnStart(ByVal args() As String)
Try
tryConn() 'Tries to connect and report the connection object on success
If _conn Is Nothing Then
If _connAttemps = 3 Then
Return
Else
setTimeout(Nothing, New Action(AddressOf tryConn), 10000, Nothing)
End If
End If
' Create a timer.
Dim aTimer As Timer = New Timer()
' Hook up the Elapsed event for the timer.
AddHandler aTimer.Elapsed, AddressOf OnTimedEvent
' Set the Interval to 30 seconds (30000 milliseconds).
aTimer.Interval = 30000
aTimer.Enabled = True
GC.KeepAlive(aTimer)
Catch ex As Exception
Dim appLog As EventLog = New EventLog()
If Not EventLog.SourceExists("WindowServiceProva") Then
EventLog.CreateEventSource("WindowServiceProva", "WindowServiceProvaLog")
End If
appLog.Source = "WindowServiceProva"
appLog.WriteEntry("Eccezione: " & ex.ToString)
End Try
End Sub
そしてそれはインストーラーです:
Public Class myInstaller
Private serviceInstaller As ServiceInstaller
Private processInstaller As ServiceProcessInstaller
Public Sub New()
MyBase.New()
'Chiamata richiesta da Progettazione componenti.
InitializeComponent()
'Aggiungere il codice di inizializzazione dopo la chiamata a InitializeComponent
processInstaller = New ServiceProcessInstaller()
serviceInstaller = New ServiceInstaller()
'Service will run under system account
processInstaller.Account = ServiceAccount.LocalSystem
'Service will have Start Type of Manual
serviceInstaller.StartType = ServiceStartMode.Automatic
serviceInstaller.ServiceName = "WindowServiceProva"
'Per evitare che il servizio di interrompa
serviceInstaller.DelayedAutoStart = True
Installers.Add(serviceInstaller)
Installers.Add(processInstaller)
End Sub
End Class
よろしくお願いします!