Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Timer (Clase)

Genera eventos recurrentes en una aplicación.

Espacio de nombres:  System.Timers
Ensamblado:  System (en System.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public class Timer : Component, ISupportInitialize

El tipo Timer expone los siguientes miembros.

  NombreDescripción
Método públicoTimer()Inicializa una nueva instancia de la clase Timer y establece todas las propiedades en sus valores iniciales.
Método públicoTimer(Double)Inicializa una nueva instancia de la clase Timer y establece la propiedad Interval en el número de milisegundos especificado.
Arriba

  NombreDescripción
Propiedad públicaAutoResetObtiene o establece un valor que indica si Timer debe provocar el evento Elapsed cada vez que transcurre el intervalo especificado o sólo después de la primera vez que transcurre.
Propiedad protegidaCanRaiseEventsObtiene un valor que indica si el componente puede generar un evento. (Se hereda de Component).
Propiedad públicaContainerObtiene IContainer que contiene Component. (Se hereda de Component).
Propiedad protegidaDesignModeObtiene un valor que indica si Component está actualmente en modo de diseño. (Se hereda de Component).
Propiedad públicaEnabledObtiene o establece un valor que indica si Timer debería provocar el evento Elapsed.
Propiedad protegidaEventsObtiene la lista de controladores de eventos asociados a Component. (Se hereda de Component).
Propiedad públicaIntervalObtiene o establece el intervalo en el que se provoca el evento Elapsed.
Propiedad públicaSiteInfraestructura. Obtiene o establece el sitio que enlaza la clase Timer a su contenedor en modo de diseño. (Invalida a Component.Site).
Propiedad públicaSynchronizingObjectObtiene o establece el objeto que se utiliza para calcular las referencias de las llamadas del controlador de eventos que se emiten al transcurrir un intervalo.
Arriba

  NombreDescripción
Método públicoBeginInitComienza la inicialización en tiempo de ejecución de un objeto Timer que se utiliza en un formulario o que lo utiliza otro componente.
Método públicoCloseLibera los recursos utilizados por Timer.
Método públicoCreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Se hereda de MarshalByRefObject).
Método públicoDispose()Libera todos los recursos utilizados por Component. (Se hereda de Component).
Método protegidoDispose(Boolean)Infraestructura. Libera todos los recursos utilizados por la clase Timer actual. (Invalida a Component.Dispose(Boolean)).
Método públicoEndInitFinaliza la inicialización en tiempo de ejecución de un objeto Timer que se utiliza en un formulario o que utiliza otro componente.
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalizeLibera recursos no administrados y realiza otras operaciones de limpieza antes de que se reclame el objeto Component durante la recolección de elementos no utilizados. (Se hereda de Component).
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoGetServiceDevuelve un objeto que representa el servicio suministrado por Component o por Container. (Se hereda de Component).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoInitializeLifetimeServiceObtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoMemberwiseClone() Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoMemberwiseClone(Boolean)Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método públicoStartEmpieza a provocar el evento Elapsed estableciendo Enabled en true.
Método públicoStopDeja de desencadenar el evento Elapsed estableciendo el valor de Enabled en false.
Método públicoToStringDevuelve un objeto String que contiene el nombre del objeto Component, en caso de que exista. Este método no debe reemplazarse. (Se hereda de Component).
Arriba

  NombreDescripción
Evento públicoDisposedSe produce cuando el componente se elimina mediante una llamada al método Dispose. (Se hereda de Component).
Evento públicoElapsedSe produce cuando transcurre el intervalo.
Arriba

El componente Timer es un temporizador basado en servidor que permite especificar un intervalo recurrente en el que se provoca el evento Elapsed en la aplicación. Una vez hecho esto, podrá controlar este evento para proporcionar un procesamiento regular. Por ejemplo, supongamos que un servidor crítico debe mantenerse en funcionamiento las 24 horas del día y los 7 días de la semana. Puede crearse un servicio que utilice Timer para comprobar periódicamente el servidor y asegurarse de que el sistema se encuentra en funcionamiento. Si el sistema no responde, el servicio podría intentar reiniciar el servidor o notificárselo a un administrador.

El Timer basado en servidor está diseñado para utilizarlo con subprocesos de trabajo en un entorno multiproceso. Los temporizadores basados en servidor pueden desplazarse entre subprocesos para controlar el evento Elapsed provocado, dando lugar a una mayor precisión que la proporcionada por los temporizadores de Windows al provocar el evento en el momento exacto.

El componente Timer provoca el evento Elapsed, que se basa en el valor de la propiedad Interval. Puede controlar este evento para ejecutar los procesos que necesite. Por ejemplo, suponga que tiene una aplicación de ventas en línea que envía continuamente pedidos de ventas a una base de datos. El servicio que compila las instrucciones de envío funciona con lotes de pedidos, en lugar de procesar cada pedido individualmente. Se puede utilizar Timer para iniciar el procesamiento de lotes cada 30 minutos.

NotaNota

Cuando AutoReset se establece en false, Timer provoca el evento Elapsed sólo una vez después de que haya transcurrido el primer intervalo (propiedad Interval). Para seguir provocando al evento Elapsed en la propiedad Interval, se debe establecer la propiedad AutoReset en true.

En .NET Framework versión 2.0 y anteriores, el componente Timer detecta y suprime todas las excepciones producidas por controladores de eventos para el evento Elapsed. Este comportamiento está sujeto a cambios en lanzamientos futuros de .NET Framework.

Si la propiedad SynchronizingObject es null, el evento Elapsed se genera en un subproceso ThreadPool. Si el procesamiento del evento Elapsed dura más que Interval, el evento puede provocarse de nuevo en otro subproceso de ThreadPool. En esta situación, el controlador de eventos debería ser reentrante.

NotaNota

El método de control de eventos puede ejecutarse en un subproceso al mismo tiempo que otro subproceso llama al método Stop o establece la propiedad Enabled en false. Esto puede dar lugar a que el evento Elapsed se provoque después de detenerse el temporizador. En el ejemplo de código para el método Stop se muestra una forma de evitar esta condición de carrera.

Aun cuando SynchronizingObject no es null, los eventos Elapsed se pueden generar después de Dispose o se ha llamado al método Stop o una vez establecida en false la propiedad Enabled, porque la señal para generar el evento Elapsed siempre se pone en la cola para la ejecución en un subproceso del grupo de subprocesos. Una manera de resolver esta condición de carrera es establecer una marca que indique al controlador de eventos que el evento Elapsed omita los eventos subsiguientes.

Si se utiliza la clase Timer con un elemento de interfaz de usuario, como un formulario o un control, sin colocar el temporizador en un elemento de la interfaz de usuario, se debe asignar el formulario o el control que contiene la clase Timer a la propiedad SynchronizingObject, de modo que se calculen las referencias del evento al subproceso de la interfaz de usuario.

Timer no es visible en tiempo de ejecución.

Para obtener una lista con los valores de propiedad iniciales de una instancia de Timer, vea el constructor Timer.

NotaNota

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de propiedad Resources: Synchronization | ExternalThreading. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación en SQL Server y atributos de protección de host.

En el ejemplo de código siguiente se establece un controlador de eventos para el evento Timer.Elapsed y se crea e inicia un temporizador. El controlador de eventos muestra la propiedad SignalTime cada vez que se provoca el evento.

NotaNota

El código contiene declaraciones de la variable de temporizador en el nivel de clase y dentro de Main. Para ver cómo la recolección de elementos no utilizados agresiva puede afectar a un temporizador que se declara dentro de un método de ejecución prolongada, puede marcar como comentario la declaración del nivel de clase y quitar los comentarios de la variable local. Para evitar recopilar el temporizador, quite las marcas de comentario del método GC.KeepAlive al final de Main.


using System;
using System.Timers;

public class Timer1
{
    private static System.Timers.Timer aTimer;

    public static void Main()
    {
        // Normally, the timer is declared at the class level,
        // so that it stays in scope as long as it is needed.
        // If the timer is declared in a long-running method,  
        // KeepAlive must be used to prevent the JIT compiler 
        // from allowing aggressive garbage collection to occur 
        // before the method ends. You can experiment with this
        // by commenting out the class-level declaration and 
        // uncommenting the declaration below; then uncomment
        // the GC.KeepAlive(aTimer) at the end of the method.
        //System.Timers.Timer aTimer;

        // Create a timer with a ten second interval.
        aTimer = new System.Timers.Timer(10000);

        // Hook up the Elapsed event for the timer.
        aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

        // Set the Interval to 2 seconds (2000 milliseconds).
        aTimer.Interval = 2000;
        aTimer.Enabled = true;

        Console.WriteLine("Press the Enter key to exit the program.");
        Console.ReadLine();

        // If the timer is declared in a long-running method, use
        // KeepAlive to prevent garbage collection from occurring
        // before the method ends.
        //GC.KeepAlive(aTimer);
    }

    // Specify what you want to happen when the Elapsed event is 
    // raised.
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
    }
}

/* This code example produces output similar to the following:

Press the Enter key to exit the program.
The Elapsed event was raised at 5/20/2007 8:42:27 PM
The Elapsed event was raised at 5/20/2007 8:42:29 PM
The Elapsed event was raised at 5/20/2007 8:42:31 PM
...
 */


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft