Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

Timer (Clase)

Proporciona un mecanismo para ejecutar métodos en intervalos especificados. Esta clase no puede heredarse.

Espacio de nombres:  System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public sealed class Timer : MarshalByRefObject, 
	IDisposable

El tipo Timer expone los siguientes miembros.

  NombreDescripción
Método públicoTimer(TimerCallback)Inicializa una nueva instancia de la clase Timer con un período y un tiempo límite infinitos, utilizando el objeto Timer recién creado como objeto de estado.
Método públicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifTimer(TimerCallback, Object, Int32, Int32)Inicializa una nueva instancia de la clase Timer utilizando un entero de 32 bits con signo para medir los intervalos de tiempo.
Método públicoCompatible con XNA FrameworkTimer(TimerCallback, Object, Int64, Int64)Inicializa una nueva instancia de la clase Timer utilizando un entero de 64 bits con signo para medir los intervalos de tiempo.
Método públicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifTimer(TimerCallback, Object, TimeSpan, TimeSpan)Inicializa una nueva instancia de la clase Timer, utilizando valores de TimeSpan para medir los intervalos de tiempo.
Método públicoCompatible con XNA FrameworkTimer(TimerCallback, Object, UInt32, UInt32)Inicializa una nueva instancia de la clase Timer utilizando un entero de 32 bits sin signo para medir los intervalos de tiempo.
Arriba

  NombreDescripción
Método públicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifChange(Int32, Int32)Cambia el tiempo de inicio y el intervalo entre las distintas invocaciones de método para un temporizador, utilizando enteros de 32 bits con signo para medir los intervalos de tiempo.
Método públicoCompatible con XNA FrameworkChange(Int64, Int64)Cambia el tiempo de inicio y el intervalo entre las distintas invocaciones de método para un temporizador, utilizando enteros de 64 bits con signo para medir los intervalos de tiempo.
Método públicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifChange(TimeSpan, TimeSpan)Cambia el tiempo de inicio y el intervalo entre las distintas invocaciones del método para un temporizador, utilizando los valores de TimeSpan para medir los intervalos de tiempo.
Método públicoCompatible con XNA FrameworkChange(UInt32, UInt32)Cambia el tiempo de inicio y el intervalo entre las distintas invocaciones de método para un temporizador, utilizando enteros de 32 bits sin signo para medir los intervalos de tiempo.
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úblicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifDispose()Libera todos los recursos utilizados por la instancia de Timer actual.
Método públicoDispose(WaitHandle)Libera todos los recursos utilizados por la instancia de Timer actual e indica el momento en el que se ha eliminado el temporizador.
Método públicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifEquals(Object)Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegidoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifGetHashCodeActúa como función hash para un tipo concreto. (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 públicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifGetType 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 protegidoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifMemberwiseClone() 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úblicoCompatible con XNA Frameworksaba8ksx.PortableClassLibrary(es-es,VS.100).gifToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

Utilice un delegado de TimerCallback para especificar el método que desea que Timer ejecute. El delegado de temporizador se especifica cuando se construye el temporizador, y no se puede cambiar. El método no se ejecuta en el subproceso que creó el temporizador; se ejecuta en un subproceso ThreadPool suministrado por el sistema.

Cuando se crea un temporizador, se puede especificar un período de tiempo de espera antes de la primera ejecución del método (tiempo límite) y un período de tiempo de espera entre las ejecuciones posteriores (período). Puede cambiar estos valores, o deshabilitar el temporizador, utilizando el método Change.

NotaNota

Siempre que se esté utilizando un Timer, se debe mantener una referencia a él. Como ocurre con cualquier objeto administrado, Timer será eliminado por el recolector de elementos no utilizados cuando no haya referencias a él. El hecho de que Timer siga estando activo no impide que los elimine el recolector de elementos no utilizados.

Si un temporizador deja de ser necesario, utilice el método Dispose para liberar los recursos controlados por el temporizador. Observe que las devoluciones de llamada se pueden producir una vez que se ha llamado a la sobrecarga de método Dispose(), porque el temporizador pone en cola las devoluciones de llamada para la ejecución por subprocesos del grupo de subprocesos. Puede utilizar la sobrecarga de método Dispose(WaitHandle) para esperar hasta que todas las devoluciones de llamada se hayan completado.

El método de devolución de llamada ejecutado por el temporizador debe ser de reentrada, porque se le llama en subprocesos de ThreadPool. La devolución de llamada se puede ejecutar simultáneamente en dos subprocesos del grupo de subprocesos si el intervalo del temporizador es menor que el tiempo necesario para ejecutar la devolución de llamada, o si todos los subprocesos del grupo de subprocesos están en uso y la devolución de llamada se sitúa varias veces en la cola.

NotaNota

System.Threading.Timer es un temporizador sencillo y de pequeño tamaño que utiliza métodos de devolución de llamada, atendido por subprocesos del grupo de subprocesos. No se recomienda para su uso con Windows Forms, porque no realiza las devoluciones de llamada en el subproceso de la interfaz de usuario. System.Windows.Forms.Timer es una opción más adecuada para el uso con Windows Forms. Para la funcionalidad de temporizador basado en servidor, puede considerar la opción de utilizar System.Timers.Timer, que provoca eventos y tiene características adicionales.

NotaNota

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de la 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 muestran las características de la clase Timer.


using System;
using System.Threading;

class TimerExample
{
    static void Main()
    {
        // Create an event to signal the timeout count threshold in the
        // timer callback.
        AutoResetEvent autoEvent     = new AutoResetEvent(false);

        StatusChecker  statusChecker = new StatusChecker(10);

        // Create an inferred delegate that invokes methods for the timer.
        TimerCallback tcb = statusChecker.CheckStatus;

        // Create a timer that signals the delegate to invoke 
        // CheckStatus after one second, and every 1/4 second 
        // thereafter.
        Console.WriteLine("{0} Creating timer.\n", 
            DateTime.Now.ToString("h:mm:ss.fff"));
        Timer stateTimer = new Timer(tcb, autoEvent, 1000, 250);

        // When autoEvent signals, change the period to every
        // 1/2 second.
        autoEvent.WaitOne(5000, false);
        stateTimer.Change(0, 500);
        Console.WriteLine("\nChanging period.\n");

        // When autoEvent signals the second time, dispose of 
        // the timer.
        autoEvent.WaitOne(5000, false);
        stateTimer.Dispose();
        Console.WriteLine("\nDestroying timer.");
    }
}

class StatusChecker
{
    private int invokeCount;
    private int  maxCount;

    public StatusChecker(int count)
    {
        invokeCount  = 0;
        maxCount = count;
    }

    // This method is called by the timer delegate.
    public void CheckStatus(Object stateInfo)
    {
        AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
        Console.WriteLine("{0} Checking status {1,2}.", 
            DateTime.Now.ToString("h:mm:ss.fff"), 
            (++invokeCount).ToString());

        if(invokeCount == maxCount)
        {
            // Reset the counter and signal Main.
            invokeCount  = 0;
            autoEvent.Set();
        }
    }
}


.NET Framework

Compatible con: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Compatible con:

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.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.

Este tipo es seguro para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft