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