【发布时间】:2014-09-09 08:31:20
【问题描述】:
我尝试每 24 小时运行一次后台线程,但我想在特定时间运行它,比如每天上午 10 点。
Private Sub StartBackgroundThread()
Dim threadStart As New Threading.ThreadStart(AddressOf DoStuffThread)
Dim thread As New Threading.Thread(threadStart)
thread.IsBackground = True
thread.Name = "Background DoStuff Thread"
thread.Priority = Threading.ThreadPriority.Highest
thread.Start()
End Sub
我需要在到达上午 10 点时调用线程,而不是像下面这样简单地睡 24 小时。我知道一种方法可能是检查 Hour(Date.Now) = 10 和 Minute(Date.Now) = 0,但我想这不是正确的方法。
Private Sub DoStuffThread()
Do
DO things here .....
Threading.Thread.Sleep(24 * 60 * 60 * 1000)
Loop
End Sub
【问题讨论】:
-
既然你已经标记了它
scheduled-tasks,你为什么还要尝试重新发明轮子而不是仅仅使用Windows提供的内置调度程序? -
您的问题的答案是使用计划任务。还有为什么
Background DoStuff Thread有ThreadPriority.Highest? -
@Filburt 我是 VB 新手,不太确定该走哪条路。您能否就我使用任务调度程序的情况举一个例子?谢谢
-
@wuha 在 Windows 平台上创建计划任务不需要任何编程知识 - 请参阅 Schedule a task 开始。您的 VB 程序将是任务将在配置的触发器(每天上午 10 点)处执行的操作。
-
@Filburt 好吧,实际上我需要以编程方式进行
标签: .net vb.net multithreading timer scheduled-tasks