Timer.Interval Property
Gets or sets the interval, expressed in milliseconds, at which to raise the Elapsed event.
Assembly: System (in System.dll)
<TimersDescriptionAttribute("TimerInterval")> <SettingsBindableAttribute(True)> Public Property Interval As Double
Property Value
Type: System.DoubleThe time, in milliseconds, between Elapsed events. The value must be greater than zero, and less than or equal to Int32.MaxValue. The default is 100 milliseconds.
| Exception | Condition |
|---|---|
| ArgumentException | The interval is less than or equal to zero. -or- The interval is greater than Int32.MaxValue, and the timer is currently enabled. (If the timer is not currently enabled, no exception is thrown until it becomes enabled.) |
You use the Interval property to determine the frequency at which the Elapsed event is fired. Because the Timer class depends on the system clock, it has the same resolution as the system clock. This means that the Elapsed event will fire at an interval defined by the resolution of the system clock if the Interval property is less than the resolution of the system clock. The following example sets the Interval property to 5 milliseconds. When run on a Windows 7 system whose system clock has a resolution of approximately 15 milliseconds, the event fires approximately every 15 milliseconds rather than every 5 milliseconds.
Imports System.Collections.Generic Imports System.IO Imports System.Timers Module Example Private WithEvents aTimer As Timer Private eventlog As List(Of String) Private nEventsFired As Integer = 0 Private previousTime As Date Public Sub Main() eventlog = New List(Of String)() Dim sr As New StreamWriter(".\Interval.txt") ' Create a timer with a five millisecond interval. aTimer = New Timer(5) aTimer.AutoReset = True sr.WriteLine("The timer should fire every {0} milliseconds.", aTimer.Interval) aTimer.Enabled = True Console.WriteLine("Press the Enter key to exit the program... ") Console.ReadLine() For Each item In eventlog sr.WriteLine(item) Next sr.Close() Console.WriteLine("Terminating the application...") End Sub Private Sub OnTimedEvent(source As Object, e As ElapsedEventArgs) _ Handles aTimer.Elapsed eventlog.Add(String.Format("Elapsed event at {0:HH':'mm':'ss.ffffff} ({1})", e.SignalTime, If(nEventsFired = 0, 0.0, (e.SignalTime - previousTime).TotalMilliseconds))) nEventsFired += 1 previousTime = e.SignalTime if nEventsFired = 20 Then Console.WriteLine("No more events will fire...") aTimer.Enabled = False End If End Sub End Module ' The example displays the following output: ' The timer should fire every 5 milliseconds. ' Elapsed event at 08:42:49.370344 (0) ' Elapsed event at 08:42:49.385345 (15.0015) ' Elapsed event at 08:42:49.400347 (15.0015) ' Elapsed event at 08:42:49.415348 (15.0015) ' Elapsed event at 08:42:49.430350 (15.0015) ' Elapsed event at 08:42:49.445351 (15.0015) ' Elapsed event at 08:42:49.465353 (20.002) ' Elapsed event at 08:42:49.480355 (15.0015) ' Elapsed event at 08:42:49.495356 (15.0015) ' Elapsed event at 08:42:49.510358 (15.0015) ' Elapsed event at 08:42:49.525359 (15.0015) ' Elapsed event at 08:42:49.540361 (15.0015) ' Elapsed event at 08:42:49.555362 (15.0015) ' Elapsed event at 08:42:49.570364 (15.0015) ' Elapsed event at 08:42:49.585365 (15.0015) ' Elapsed event at 08:42:49.605367 (20.002) ' Elapsed event at 08:42:49.620369 (15.0015) ' Elapsed event at 08:42:49.635370 (15.0015) ' Elapsed event at 08:42:49.650372 (15.0015) ' Elapsed event at 08:42:49.665373 (15.0015)
You can use the following code to determine the resolution of the system clock on the current system:
Module Example Private Declare Function GetSystemTimeAdjustment Lib "Kernel32" ( ByRef lpTimeAdjustment As Long, ByRef lpTimeIncrement As Long, ByRef lpTimeAdjustmentDisabled As Boolean) As Boolean Public Sub Main() Dim timeAdjustment, timeIncrement As Long Dim timeAdjustmentDisabled As Boolean If GetSystemTimeAdjustment(timeAdjustment, timeIncrement, timeAdjustmentDisabled) Then If Not timeAdjustmentDisabled Then Console.WriteLine("System clock resolution: {0:N3} milliseconds", timeIncrement/10000.0) Else Console.WriteLine("Unable to determine system clock resolution.") End If End If End Sub End Module ' The example displays output similar to the following: ' System clock resolution: 15.625 milliseconds
If your app requires greater resolution than that offered by the Timer class or the system clock, use the high-resolution multimedia timers; see How to: Use the High-Resolution Timer.
If the interval is set after the Timer has started, the count is reset. For example, if you set the interval to 5 seconds and then set the Enabled property to true, the count starts at the time Enabled is set. If you reset the interval to 10 seconds when count is 3 seconds, the Elapsed event is raised for the first time 13 seconds after Enabled was set to true.
If Enabled is set to true and AutoReset is set to false, the Timer raises the Elapsed event only once, the first time the interval elapses. Enabled is then set to false.
Note |
|---|
If Enabled and AutoReset are both set to false, and the timer has previously been enabled, setting the Interval property causes the Elapsed event to be raised once, as if the Enabled property had been set to true. To set the interval without raising the event, you can temporarily set the Enabled property to true, set the Interval property to the desired time interval, and then immediately set the Enabled property back to false. |
The following example instantiates a Timer object that fires its Timer.Elapsed event every two seconds (2000 milliseconds), sets up an event handler for the event, and starts the timer. The event handler displays the value of the ElapsedEventArgs.SignalTime property each time it is raised.
Imports System.Timers Public Module Example Private aTimer As Timer Public Sub Main() ' Create a timer and set a two second interval. aTimer = New System.Timers.Timer() aTimer.Interval = 2000 ' Hook up the Elapsed event for the timer. AddHandler aTimer.Elapsed, AddressOf OnTimedEvent ' Have the timer fire repeated events (true is the default) aTimer.AutoReset = True ' Start the timer aTimer.Enabled = True Console.WriteLine("Press the Enter key to exit the program at any time... ") Console.ReadLine() End Sub Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs) Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime) End Sub End Module ' The example displays output like the following: ' Press the Enter key to exit the program at any time... ' The Elapsed event was raised at 5/20/2015 8:48:58 PM ' The Elapsed event was raised at 5/20/2015 8:49:00 PM ' The Elapsed event was raised at 5/20/2015 8:49:02 PM ' The Elapsed event was raised at 5/20/2015 8:49:04 PM ' The Elapsed event was raised at 5/20/2015 8:49:06 PM
Available since 1.1
