Timer.Interval Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece el intervalo, expresado en milisegundos, en el que se generará el evento Elapsed.
public:
property double Interval { double get(); void set(double value); };
public double Interval { get; set; }
[System.Timers.TimersDescription("TimerInterval")]
public double Interval { get; set; }
[System.Timers.TimersDescription("TimerInterval")]
[System.ComponentModel.SettingsBindable(true)]
public double Interval { get; set; }
member this.Interval : double with 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 propiedad
Tiempo, en milisegundos, entre eventos Elapsed. El valor debe ser mayor que cero y menor o igual que Int32.MaxValue. El valor predeterminado es de 100 milisegundos.
- Atributos
Excepciones
El intervalo es menor o igual que cero.
o bien
El intervalo es mayor que Int32.MaxValue y el temporizador está habilitado actualmente. (Si el temporizador no está habilitado actualmente, no se produce ninguna excepción hasta que se habilita.)
Ejemplos
En el ejemplo siguiente se crea una instancia de un Timer objeto que desencadena su Timer.Elapsed evento cada dos segundos (2000 milisegundos), se configura un controlador de eventos para el evento y se inicia el temporizador. El controlador de eventos muestra el valor de la ElapsedEventArgs.SignalTime propiedad cada vez que se genera.
using namespace System;
using namespace System::Timers;
public ref class Example
{
private:
static System::Timers::Timer^ aTimer;
public:
static void Demo()
{
// Create a timer and set a two second interval.
aTimer = gcnew System::Timers::Timer();
aTimer->Interval = 2000;
// Hook up the Elapsed event for the timer.
aTimer->Elapsed += gcnew System::Timers::ElapsedEventHandler(Example::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);
}
};
int main()
{
Example::Demo();
}
// 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
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
Comentarios
La propiedad se usa Interval para determinar la frecuencia con la que se desencadena el Elapsed evento. Dado que la Timer clase depende del reloj del sistema, tiene la misma resolución que el reloj del sistema. Esto significa que el Elapsed evento se activará en un intervalo definido por la resolución del reloj del sistema si la Interval propiedad es menor que la resolución del reloj del sistema. En el ejemplo siguiente se establece la Interval propiedad en 5 milisegundos. Cuando se ejecuta en un sistema Windows cuyo reloj del sistema tiene una resolución de aproximadamente 15 milisegundos, el evento se desencadena aproximadamente cada 15 milisegundos en lugar de cada 5 milisegundos.
Nota
El reloj del sistema que se usa es el mismo reloj utilizado por GetTickCount, que no se ve afectado por los cambios realizados con timeBeginPeriod y 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)
Si la aplicación requiere una mayor resolución que la que ofrece la Timer clase o el reloj del sistema, usa los temporizadores multimedia de alta resolución; consulta Cómo: Usar el temporizador de High-Resolution.
Si el intervalo se establece una vez Timer iniciado, se restablece el recuento. Por ejemplo, si establece el intervalo en 5 segundos y, a continuación, establece la Enabled propiedad true
en , se establece el recuento en el momento Enabled . Si restablece el intervalo a 10 segundos cuando el recuento es de 3 segundos, el Elapsed evento se genera por primera vez 13 segundos después Enabled de establecerse true
en .
Si Enabled se establece true
en y AutoReset se establece false
en , Timer genera el Elapsed evento una sola vez, la primera vez que transcurre el intervalo.
Enabled a continuación, se establece en false
.
Nota
Si Enabled y AutoReset se establecen false
en y el temporizador se ha habilitado anteriormente, establecer la Interval propiedad hace que el Elapsed evento se genere una vez, como si la Enabled propiedad se hubiera establecido true
en . Para establecer el intervalo sin generar el evento, puede establecer temporalmente la Enabled propiedad true
en , establecer la Interval propiedad en el intervalo de tiempo deseado y, a continuación, volver a establecer la Enabled propiedad inmediatamente en false
.