bear
bear

Reputation: 11625

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

How do I call a function every x minutes.

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

Upvotes: 8

Views: 40946

Answers (4)

John Woo
John Woo

Reputation: 263893

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

Upvotes: 12

parapura rajkumar
parapura rajkumar

Reputation: 24423

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

Upvotes: 4

William Lawn Stewart
William Lawn Stewart

Reputation: 1205

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.

Upvotes: 4

Afshin
Afshin

Reputation: 1253

    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

Upvotes: 2

Related Questions