Thread Schlaf-und Windows-Dienste

Arbeite ich an einem Windows-Dienst, der einige Probleme mit Thread.Sleep() so dass ich dachte, ich würde versuchen, einen timer zu verwenden, anstatt, wie diese Frage empfiehlt:

Mit Thread.Sleep() in einem Windows-Dienst

Sache ist, es ist mir nicht ganz klar, wie könnte man dies umsetzen. Ich glaube, das ist der Weg, aber ich wollte nur um sicher zu gehen:

'' Inside The Service Object
Dim closingGate As System.Threading.AutoResetEvent

Protected Overrides Sub OnStart(ByVal args() As String)
   Dim worker As New Threading.Thread(AddressOf Work)
   worker.Start()
End Sub

Protected Sub Work()
   Dim Program = New MyProgram()
   closingGate = New System.Threading.AutoResetEvent(False)
   Program.RunService(closingGate)
End Sub

Protected Overrides Sub OnStop()
   closingGate.Set()
End Sub

'' Inside My Programs Code:
Public Sub RunService(closingGate As AutoResetEvent)
   Dim tmr As New Timer
   '' ...and so on

   closingGate.WaitOne()
End Sub

Abgesehen von VB.Net (Scherz, aber ich würde mit C#, wenn ich könnte.) bin ich auf dem richtigen Weg? Ist das besser als mit Thread.Sleep()?

  • Warum sind die Namen der Variablen aktiviert?
  • Es. Fixiert es.
Schreibe einen Kommentar