0

1 分ごとに実行され、いくつかの DB および IO 操作を実行する Windows サービスがあります。

すべて正常に動作しますが、しばらくするとサービスが機能しないことがわかりました。

開始したことを示していますが、何も起こっていません。

1) これは、GC によって収集されているタイマーの bcoz でしょうか? はいの場合、私のコードに問題があります。

2) onstart と onstop で timer.enable を使用しましたが、timer.start と timer.stop を使用する必要があります。

3) Threading.Timer を使用したい場合は、次のコードで何を変更する必要がありますか。

どんな助けでも大歓迎です

Imports System.ServiceProcess
Imports System.Timers
Imports System.Configuration

Public Class ReportingImmediate
    Inherits ServiceBase

#Region "Members"

    Private ReadOnly time As Timers.Timer
    Private ReadOnly ReportingHelper As ReportingHelper
    Private ReadOnly timeInterval As String

#End Region

    Public Sub New()
        ' Initialize Logs
        InitializeComponent()
        ' Initialize other components
        time = New System.Timers.Timer()
        timeInterval = ConfigurationManager.AppSettings("ImmediateReRunInterval")
        time.Interval = Integer.Parse(timeInterval)
        AddHandler time.Elapsed, AddressOf TimeElapsed
        objReportingHelper = New ReportingHelper()

    End Sub

#Region "Timer Event"

    ''' <summary>time Elapsed</summary>
    ''' <param name="sender">The object that raised the event sender</param>
    ''' <param name="e">Event data passed to the handler e</param>
    Private Sub TimeElapsed(sender As Object, e As ElapsedEventArgs)
        time.Enabled = False
        objReportingHelper.GetReportsForExecutions(1)
        ' Enable the Timer
        time.Enabled = True
        time.Interval = Integer.Parse(timeInterval)
    End Sub

#End Region

#Region "Service Events"

    ''' <summary>On Start</summary>
    ''' <param name="args">Arguments</param>
    Protected Overrides Sub OnStart(args As String())
        time.Enabled = True
    End Sub

    ''' <summary>On Stop</summary>
    Protected Overrides Sub OnStop()
        time.Enabled = False
    End Sub

#End Region

End Class
4

0 に答える 0