Much stuff
This commit is contained in:
74
JobRunner/JobRunner.vb
Normal file
74
JobRunner/JobRunner.vb
Normal file
@@ -0,0 +1,74 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Timers
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Jobs
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
Public Class JobRunner
|
||||
Private WithEvents _workerThread As BackgroundWorker
|
||||
Private WithEvents _workerTimer As Timer
|
||||
|
||||
Private _interval As Long
|
||||
Private _logConfig As LogConfig
|
||||
Private _logger As Logger
|
||||
Private _firebird As Firebird
|
||||
|
||||
Public Sub New(LogConfig As LogConfig, Firebird As Firebird, Interval As Long)
|
||||
_logConfig = LogConfig
|
||||
_logger = _logConfig.GetLogger()
|
||||
_firebird = Firebird
|
||||
_interval = Interval
|
||||
|
||||
_workerTimer = New Timer()
|
||||
_workerThread = New BackgroundWorker() With {
|
||||
.WorkerReportsProgress = False,
|
||||
.WorkerSupportsCancellation = True
|
||||
}
|
||||
End Sub
|
||||
|
||||
Public Sub Start()
|
||||
_workerTimer.Interval = _interval * 1000
|
||||
_workerTimer.Start()
|
||||
_logger.Debug("JobRunner started with {0}s Interval.", _interval)
|
||||
End Sub
|
||||
|
||||
Public Sub [Stop]()
|
||||
Try
|
||||
If _workerThread.IsBusy Then
|
||||
_workerThread.CancelAsync()
|
||||
_logger.Debug("Background Worker cancelled.")
|
||||
End If
|
||||
_workerTimer.Stop()
|
||||
_logger.Debug("Background Worker stopped.")
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub TimerElapsed(sender As Object, e As ElapsedEventArgs) Handles _workerTimer.Elapsed
|
||||
If Not _workerThread.IsBusy Then
|
||||
_workerThread.RunWorkerAsync()
|
||||
Else
|
||||
_logger.Warn("Background Worker is busy")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub DoWork(sender As Object, e As DoWorkEventArgs) Handles _workerThread.DoWork
|
||||
Try
|
||||
Dim args As WorkerArgs = e.Argument
|
||||
|
||||
_logger.Debug("Background worker running..")
|
||||
|
||||
' TODO: WORK
|
||||
'Dim job As New ImportZUGFeRDFiles(_logConfig, _firebird)
|
||||
'job.Start(args)
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Background worker failed!")
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub WorkCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles _workerThread.RunWorkerCompleted
|
||||
_logger.Debug("Background worker completed!")
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user