我已经使用计时器构建了Windows服务,这对我想做的事情并不理想。我要调用一个方法,完成后,我希望它一次又一次地启动。最好的方法是什么,您可以举个例子吗?

最佳答案

您能否再解释一下您要完成的工作。

在服务中使用计时器时,您将需要使用System.Threading.Timer。

如果您经常循环播放,则您的CPU使用率将不断攀升。如果您尝试监视目录,则可以使用FileSystemWatcher,但是如果您的主机未运行Windows,这可能会很麻烦。如果您要查询表并获取结果,则可以让它每15秒查看一次新记录,如果存在新记录,则将该函数标记为通过布尔值运行,因此如果它在15秒后仍运行,则不会再次发射。

我将为您提供系统服务中计时器的示例。

    Private myThreadingTimer As System.Threading.Timer
    Private blnCurrentlyRunning As Boolean = False

    Protected Overrides Sub OnStart(ByVal args() As String)
       Dim myTimerCallback As New TimerCallback(AddressOf OnTimedEvent)
       myThreadingTimer = New System.Threading.Timer(myTimerCallback, Nothing, 1000, 1000)
    End Sub

    Private Sub OnTimedEvent(ByVal state As Object)
        If Date.Now.Second = 1 Or Date.Now.Second = 15 Or Date.Now.Second = 30 Or Date.Now.Second = 45 Then
            If Not blnCurrentlyRunning Then
                blnCurrentlyRunning = True

                Dim myNewThread As New Thread(New ThreadStart(AddressOf MyFunctionIWantToCall))
                myNewThread.Start()
            End If
        End If
    End Sub

Public Sub MyFunctionIWantToCall()
   Try
       'Do Something
   Catch ex As Exception
   Finally
       blnCurrentlyRunning = False
   End Try
End Sub

关于c# - Windows服务循环-如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1201138/

10-11 22:34
查看更多