我在.NET中编写了一个Windows服务的代码....但是无论我在tmrRun属性中放置什么时间间隔,TICK函数都不会被执行。我错过了什么?我确信这是我看不到的蠢事。
谢谢
Imports System.IO
Public Class HealthMonitor
Protected Overrides Sub OnStart(ByVal args() As String)
// Add code here to start your service. This method should set things
// in motion so your service can do its work.
tmrRun.Start()
End Sub
Protected Overrides Sub OnStop()
// Add code here to perform any tear-down necessary to stop your service.
tmrRun.Stop()
End Sub
Private Sub tmrRun_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrRun.Tick
//DO some stuff
End Sub
End Class
答案 0 :(得分:6)
如果您使用的是无法在服务中运行的System.Windows.Forms.Timer。查看另外两次可以在.NET中使用。
答案 1 :(得分:6)
这对我有帮助。
Imports System Imports System.Timers Public Class MyTimers Protected Overrides Sub OnStart(ByVal args() As String) Dim MyTimer As New System.Timers.Timer() AddHandler MyTimer.Elapsed, AddressOf OnTimedEvent ' Set the Interval to 10 seconds (10000 milliseconds). MyTimer.Interval = 10000 MyTimer.Enabled = True End Sub Private Shared Sub OnTimedEvent(source As Object, e As ElapsedEventArgs) Console.WriteLine("Hello World!") End Sub End Class
答案 2 :(得分:3)
您需要正确绑定事件。在启动计时器之前,您可以使用System.Timers.Timer
并将Elapsed
事件绑定到tmrRun_Tick
。
This article解释了不同的计时器。
答案 3 :(得分:0)
您是否使用AddHandler附加了事件处理程序?
答案 4 :(得分:0)
您正在使用Windows.Form.Time及其中的Tick事件,该事件无法在Windows服务中运行。
您必须使用System.Timers和Elapsed事件才能使其正常工作。
答案 5 :(得分:0)
将AddHandler
添加到您的OnStart
子
EG。 :
Dim TimerX as new system.threading.timer
'You can also use
'Dim TimerX as new system.timers.timer
'And you can't use
'Dim TimerX As new system.windows.forms.timer
'As it is only available in forms
public sub onStart(ByVal args as ...)
AddHandler TimerX.Elapsed, AddressOf TimerX_Tick
With TimerX
.interval = 1000
.enabled = true
End With
end sub
private sub TimerX_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
'Tick
End sub
答案 6 :(得分:0)
我遇到了同样的问题,但是我正在使用System.Timers.Timer
而且我处理了Elapsed
事件...在某些机器上工作而不是在其他机器上工作。
我发现我的自定义日志在定时器内部没有工作,并且代码运行的任务/线程吞没了异常。
使用Windows事件日志(System.Diagnostic.EventLog
)确保发生了什么。
这很容易。