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)

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)

'Declaración
<ComVisibleAttribute(True)> _
<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True,  _
	ExternalThreading := True)> _
Public NotInheritable Class Timer _
	Inherits MarshalByRefObject _
	Implements 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 FrameworkCompatible con Biblioteca de clases portableTimer(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 FrameworkCompatible con Biblioteca de clases portableTimer(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 FrameworkCompatible con Biblioteca de clases portableChange(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 FrameworkCompatible con Biblioteca de clases portableChange(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 FrameworkCompatible con Biblioteca de clases portableDisposeLibera 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 FrameworkCompatible con Biblioteca de clases portableEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableGetHashCode 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 públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableGetType 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 públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableToString 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 la recolección 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 valor de propiedad Resources siguiente: 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.


Imports Microsoft.VisualBasic
Imports System
Imports System.Threading

Public Class TimerExample

    <MTAThread> _
    Shared Sub Main()

        ' Create an event to signal the timeout count threshold in the
        ' timer callback.
        Dim autoEvent As New AutoResetEvent(False)

        Dim statusChecker As New StatusChecker(10)

        ' Create an inferred delegate that invokes methods for the timer.
        Dim tcb As TimerCallback = AddressOf 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." & vbCrLf, _
            DateTime.Now.ToString("h:mm:ss.fff"))
        Dim stateTimer As Timer = 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(vbCrLf & "Changing period." & vbCrLf)

        ' When autoEvent signals the second time, dispose of 
        ' the timer.
        autoEvent.WaitOne(5000, False)
        stateTimer.Dispose()
        Console.WriteLine(vbCrLf & "Destroying timer.")

    End Sub
End Class

Public Class StatusChecker

    Dim invokeCount, maxCount As Integer 

    Sub New(count As Integer)
        invokeCount  = 0
        maxCount = count
    End Sub

    ' This method is called by the timer delegate.
    Sub CheckStatus(stateInfo As Object)
        Dim autoEvent As AutoResetEvent = _
            DirectCast(stateInfo, AutoResetEvent)
        invokeCount += 1
        Console.WriteLine("{0} Checking status {1,2}.", _
            DateTime.Now.ToString("h:mm:ss.fff"), _
            invokeCount.ToString())

        If invokeCount = maxCount Then
            ' Reset the counter and signal to stop the timer.
            invokeCount  = 0
            autoEvent.Set()
        End If
    End Sub

End Class


.NET Framework

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

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

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.

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

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft