0

簡単な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

よろしくお願いします!

4

0 に答える 0