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
Este tema aún no ha recibido ninguna valoración - Valorar este tema

ElapsedEventArgs.SignalTime (Propiedad)

Obtiene la hora a la que se produjo el evento Timer.Elapsed.

Espacio de nombres:  System.Timers
Ensamblado:  System (en System.dll)
public DateTime SignalTime { get; }

Valor de propiedad

Tipo: System.DateTime
Hora a la que se produjo el evento Elapsed.

El evento Timer.Elapsed se provoca en un subproceso ThreadPool, de modo que el método de control de eventos puede ejecutarse en un subproceso al mismo tiempo que se ejecuta una llamada al método Timer.Stop en otro subproceso. Esto puede dar lugar a que se provoque el evento Elapsed incluso después de haber llamado al método Stop. Esta condición de carrera no se puede evitar simplemente comparando la propiedad SignalTime con la hora a la que se llamó al método Stop porque el método de control de eventos podría estar ejecutándose cuando se llamó al método Stop o podría haber empezado a ejecutarse entre la llamada al método Stop y el momento en que se guardó hora de parada. En casos en los que sea importante impedir que el método Stop continúe mientras se ejecuta el método de control de eventos, utilice un mecanismo de sincronización más eficaz, como la clase Monitor o el método CompareExchange. En el ejemplo del método Timer.Stop podrá encontrar código donde se utiliza el método CompareExchange.

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.


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, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

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.
¿Te ha resultado útil?
(Caracteres restantes: 1500)

Adiciones de comunidad

AGREGAR
© 2013 Microsoft. Reservados todos los derechos.