如何在VB.NET中每x分钟调用一次函数?

时间:2012-01-11 01:26:43

标签: vb.net

如何每x分钟调用一次函数。

我假设我必须在表单中添加一个计时器?

4 个答案:

答案 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