Timer.Interval Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém ou define o intervalo, expresso em milissegundos, a partir do qual se eleva o Elapsed evento.
public:
property double Interval { double get(); void set(double value); };
[System.Timers.TimersDescription("TimerInterval")]
public double Interval { get; set; }
[System.Timers.TimersDescription("TimerInterval")]
[System.ComponentModel.SettingsBindable(true)]
public double Interval { get; set; }
[<System.Timers.TimersDescription("TimerInterval")>]
member this.Interval : double with get, set
[<System.Timers.TimersDescription("TimerInterval")>]
[<System.ComponentModel.SettingsBindable(true)>]
member this.Interval : double with get, set
Public Property Interval As Double
Valor de Propriedade
O tempo, em milissegundos, entre Elapsed eventos. O valor deve ser maior que zero, e menor ou igual a Int32.MaxValue. O padrão é 100 milissegundos.
- Atributos
Exceções
O intervalo é menor ou igual a zero.
-ou-
O intervalo é superior ao Int32.MaxValue, e o temporizador está atualmente ativado. (Se o temporizador não estiver atualmente ativado, não é lançada nenhuma exceção até que fique ativado.)
Exemplos
O exemplo seguinte instancia um Timer objeto que dispara o seu Timer.Elapsed evento a cada dois segundos (2000 milissegundos), cria um manipulador de eventos para o evento e inicia o temporizador. O gestor de eventos mostra o valor da ElapsedEventArgs.SignalTime propriedade cada vez que esta é elevada.
using System;
using System.Timers;
public class Example
{
private static Timer aTimer;
public static void 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.
aTimer.Elapsed += 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();
}
private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}
}
// 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
open System.Timers
let onTimedEvent source (e: ElapsedEventArgs) =
printfn $"The Elapsed event was raised at {e.SignalTime}"
// Create a timer and set a two second interval.
let aTimer = new Timer()
aTimer.Interval <- 2000
// Hook up the Elapsed event for the timer.
aTimer.Elapsed.AddHandler onTimedEvent
// Have the timer fire repeated events (true is the default)
aTimer.AutoReset <- true
// Start the timer
aTimer.Enabled <- true
printfn "Press the Enter key to exit the program at any time... "
stdin.ReadLine() |> ignore
// 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
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
Observações
Usas a Interval propriedade para determinar a frequência com que o Elapsed evento é disparado. Como a Timer classe depende do relógio do sistema, tem a mesma resolução que o relógio do sistema. Isto significa que o Elapsed evento irá disparar num intervalo definido pela resolução do relógio do sistema se a Interval propriedade for inferior à resolução do relógio do sistema. O exemplo seguinte define a Interval propriedade para 5 milissegundos. Quando executado num sistema Windows cujo relógio do sistema tem uma resolução de aproximadamente 15 milissegundos, o evento é ativado aproximadamente a cada 15 milissegundos em vez de a cada 5 milissegundos.
Note
O relógio do sistema utilizado é o mesmo que o GetTickCount, que não é afetado por alterações feitas com timeBeginPeriod e timeEndPeriod.
using System;
using System.IO;
using System.Collections.Generic;
using System.Timers;
public class Example
{
private static Timer aTimer;
private static List<String> eventlog;
private static int nEventsFired = 0;
private static DateTime previousTime;
public static void Main()
{
eventlog = new List<String>();
StreamWriter sr = new StreamWriter(@".\Interval.txt");
// Create a timer with a five millisecond interval.
aTimer = new Timer(5);
aTimer.Elapsed += OnTimedEvent;
// Hook up the Elapsed event for the timer.
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();
foreach (var item in eventlog)
sr.WriteLine(item);
sr.Close();
Console.WriteLine("Terminating the application...");
}
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
eventlog.Add(String.Format("Elapsed event at {0:HH':'mm':'ss.ffffff} ({1})",
e.SignalTime,
nEventsFired++ == 0 ?
0.0 : (e.SignalTime - previousTime).TotalMilliseconds));
previousTime = e.SignalTime;
if (nEventsFired == 20) {
Console.WriteLine("No more events will fire...");
aTimer.Enabled = false;
}
}
}
// The example writes output like the following to a file:
// 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)
open System
open System.IO
open System.Timers
let aTimer = new Timer 5
let eventlog = ResizeArray()
let mutable nEventsFired = 0
let mutable previousTime = DateTime()
let onTimedEvent source (e: ElapsedEventArgs) =
String.Format("Elapsed event at {0:HH':'mm':'ss.ffffff} ({1})", e.SignalTime, if nEventsFired = 0 then 0. else (e.SignalTime - previousTime).TotalMilliseconds)
|> eventlog.Add
nEventsFired <- nEventsFired + 1
previousTime <- e.SignalTime
if nEventsFired = 20 then
printfn "No more events will fire..."
aTimer.Enabled <- false
[<EntryPoint>]
let main _ =
use sr = new StreamWriter(@".\Interval.txt")
// Create a timer with a five millisecond interval.
aTimer.Elapsed.AddHandler onTimedEvent
// Hook up the Elapsed event for the timer.
aTimer.AutoReset <- true
sr.WriteLine $"The timer should fire every {aTimer.Interval} milliseconds."
aTimer.Enabled <- true
printfn "Press the Enter key to exit the program... "
stdin.ReadLine() |> ignore
for item in eventlog do
sr.WriteLine item
printfn "Terminating the application..."
0
// The example writes output like the following to a file:
// 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)
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)
Se a sua aplicação exigir maior resolução do que a oferecida pela Timer turma ou pelo relógio do sistema, use os temporizadores multimédia de alta resolução; veja Como: Usar o Temporizador High-Resolution.
Se o intervalo for definido depois de ter Timer começado, a contagem é reiniciada. Por exemplo, se definir o intervalo para 5 segundos e depois definir a Enabled propriedade para true, a contagem começa no momento Enabled em que é definido. Se reiniciar o intervalo para 10 segundos quando a contagem é de 3 segundos, o Elapsed evento é elevado pela primeira vez 13 segundos depois Enabled de ter sido definido para true.
Se Enabled for definido como true e AutoReset for definido como false, o Timer evento aumenta Elapsed apenas uma vez, na primeira vez que o intervalo decorre.
Enabled é então definido para false.
Note
Se Enabled e AutoReset estiverem ambos definidos como false, e o temporizador tiver sido previamente ativado, definir a Interval propriedade faz com que o Elapsed evento seja levantado uma vez, como se a Enabled propriedade tivesse sido definida para true. Para definir o intervalo sem aumentar o evento, pode temporariamente definir a Enabled propriedade para true, definir a Interval propriedade para o intervalo de tempo desejado, e depois imediatamente voltar a definir Enabled a propriedade para false.