如何每x分钟调用一次函数。
我假设我必须在表单中添加一个计时器?
答案 0 :(得分:8)
这是一个简单的例子:
Public Class SampleCallEveryXMinute
Private WithEvents xTimer as new System.Windows.Forms.Timer
Public Sub New(TickValue as integer)
xTimer = new System.Windows.Forms.Timer
xTimer.Interval = TickValue
End Sub
Public Sub StartTimer
xTimer.Start
End Sub
Public Sub StopTimer
xTimer.Stop
End Sub
Private Sub Timer_Tick Handles xTimer.Tick
SampleProcedure
End Sub
Private Sub SampleProcedure
'SomeCodesHERE
End Sub
End Class
用法:
Dim xSub as new SampleCallEveryXMinute(60000) ' 1000 ms = 1 sec so 60000 ms = 1 min
xSub.StartTimer
答案 1 :(得分:2)
替代方案1
以下是在VB.net中使用Timer Control的好指南。
优点是您不必担心从非UI线程修改UI对象。
ALTERNATIVE 2
另一个选择是产生另一个线程并完成工作并休眠剩余的x分钟。
这里的优点是,如果你的功能没有触及UI对象,你的应用程序将在调用函数时保持对用户输入的响应
答案 2 :(得分:2)
是的,您可以在表单中添加一个计时器,并将其间隔设置为x * 60000,其中x是调用之间的分钟数。
请记住,计时器在UI线程上运行,因此不要在函数中执行任何操作。此外,如果UI线程忙,则在UI线程完成当前正在处理的任何事件之前,不会触发计时器事件。如果您的功能将是CPU密集型的,那么请考虑让计时器启动后台工作程序
如果在函数调用之间需要更长的时间段(即,对于定时器间隔而言太大),则可以使用每分钟触发一次的定时器函数,并递增计数器直到所需的时间量已过,在继续调用函数之前。
答案 3 :(得分:1)
Private Sub Form_Load()
_timer.Enabled = True
End Sub
Private Sub _timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ListBox1.Items.Add(DateTime.Now.ToLongTimeString() + "," + DateTime.Now.ToLongDateString())
End Sub