How do I call a function every x minutes in VB.NET?

ⅰ亾dé卋堺 提交于 2021-02-18 06:43:39

问题


How do I call a function every x minutes.

I assume I'd have to add a timer to the form?


回答1:


here is a simple example:

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

USAGE:

Dim xSub as new SampleCallEveryXMinute(60000) ' 1000 ms = 1 sec so 60000 ms = 1 min
xSub.StartTimer



回答2:


Yes, you could add a timer to the form, and set its interval to x*60000, where x is the number of minutes between calls.

Remember that the timer runs on the UI thread, so don't do anything intensive in the function. Also, if the UI thread is busy, the timer event will not fire until the UI thread finishes whatever event it is currently processing. If your function is going to be CPU-intensive, then consider having the timer start up a background worker

If you require a longer time period between function calls (ie, one thats too big for a timer interval) then you could have a timer function that fires every minute, and increments a counter until the desired amount of time has passed, before going on to call the function.




回答3:


ALTERNATIVE 1

Here is good guide to use the Timer Control in VB.net.

The advantage is that you don't have to worry about modifying UI objects from non UI thread.

ALTERNATIVE 2

Another alternative is to spawn another thread and do the work and sleep the remaining x minutes.

The advantage here is that if your function doesn't touch UI objects your application will remain responsive to user input while the function is being called




回答4:


    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


来源:https://stackoverflow.com/questions/8813004/how-do-i-call-a-function-every-x-minutes-in-vb-net

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!