Windows服务或控制台应用程序中的System.Timers.Timer
问题描述:
我在写一个vb.net .net 4.0应用程序,并且遇到了计时器过期的问题。有人可以告诉我我做错了什么吗?Windows服务或控制台应用程序中的System.Timers.Timer
我已经对主应用程序进行了很多故障诊断,所以我决定尝试使它在新项目中工作,并且似乎无法使其工作。
谢谢!
Module Module1
Public Timer As New System.Timers.Timer
Sub Main()
AddHandler Timer.Elapsed, AddressOf Timer_Tick
Timer.AutoReset = True
Timer.Interval = 1000
Timer.Start()
Console.WriteLine("Timer Started")
End Sub
Sub Timer_Tick(source As Object, e As EventArgs)
Console.WriteLine("TimerTick")
End Sub
End Module
答
您需要确保Main()
继续运行,否则您的进程将立即终止。
您可以使用Console.ReadLine()
(如果您有控制台)或Thread.Sleep(Timeout.Infinite)
。
+0
'Thread。睡眠(Timeout.Infinite)'似乎不能在vb.net中工作,而我从来没有必须在Windows服务中这样做... – GaryO
该代码即将执行,然后几乎立即关闭控制台窗口,计时器将永远不会有机会打勾。如果添加“Do Until(Console.ReadKey.Key = ConsoleKey.Escape):Loop”作为Main()子句的最后一行,那么您将看到计时器有机会按预期方式打勾并写入 – soohoonigan