Compartir a través de


DispatcherTimer Clase

Definición

Proporciona un temporizador integrado en la cola dispatcher , que se procesa en un intervalo de tiempo especificado y con una prioridad especificada.

/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DispatcherTimer
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class DispatcherTimer
Public Class DispatcherTimer
Herencia
Object IInspectable DispatcherTimer
Atributos

Ejemplos

Este código de ejemplo implementa un temporizador de estilo de consola simple que escribe datos en un TextBlock denominado TimerLog (XAML que define TimerLog no se muestra). El valor interval se establece en 1 y el registro muestra el tiempo real transcurrido para cada tic.

DispatcherTimer dispatcherTimer;
DateTimeOffset startTime;
DateTimeOffset lastTime;
DateTimeOffset stopTime;
int timesTicked = 1;
int timesToTick = 10;

public void DispatcherTimerSetup()
{
    dispatcherTimer = new DispatcherTimer();
    dispatcherTimer.Tick += dispatcherTimer_Tick;
    dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
    //IsEnabled defaults to false
    TimerLog.Text += "dispatcherTimer.IsEnabled = " + dispatcherTimer.IsEnabled + "\n";
    startTime = DateTimeOffset.Now;
    lastTime = startTime;
    TimerLog.Text += "Calling dispatcherTimer.Start()\n";
    dispatcherTimer.Start();
    //IsEnabled should now be true after calling start
    TimerLog.Text += "dispatcherTimer.IsEnabled = " + dispatcherTimer.IsEnabled + "\n";
}

void dispatcherTimer_Tick(object sender, object e)
{
    DateTimeOffset time = DateTimeOffset.Now;
    TimeSpan span = time - lastTime;
    lastTime = time;
    //Time since last tick should be very very close to Interval
    TimerLog.Text += timesTicked + "\t time since last tick: " + span.ToString() + "\n";
    timesTicked++;
    if (timesTicked > timesToTick)
    {
        stopTime = time;
        TimerLog.Text += "Calling dispatcherTimer.Stop()\n";
        dispatcherTimer.Stop();
        //IsEnabled should now be false after calling stop
        TimerLog.Text += "dispatcherTimer.IsEnabled = " + dispatcherTimer.IsEnabled + "\n";
        span = stopTime - startTime;
        TimerLog.Text += "Total Time Start-Stop: " + span.ToString() + "\n";
    }
}
private void Page_Loaded_1(object sender, RoutedEventArgs e)
{
    DispatcherTimerSetup();
}
// MainPage.cpp
...
#include <chrono>
...
void MainPage::StartTimerAndRegisterHandler()
{
    Windows::UI::Xaml::DispatcherTimer timer;
    timer.Interval(std::chrono::milliseconds{ 500 });
    auto registrationtoken = timer.Tick({this, &MainPage::OnTick });
    timer.Start();
}

void MainPage::OnTick(Windows::Foundation::IInspectable const& /* sender */,
    Windows::Foundation::IInspectable const& /* e */)
{
    // do something on each tick here ...
}

Comentarios

DispatcherTimer se puede usar para ejecutar código en el mismo subproceso que genera el subproceso de interfaz de usuario. El código que se ejecuta en este subproceso tiene el privilegio de crear y modificar objetos que solo se pueden crear y modificar en el subproceso de la interfaz de usuario. Para especificar que el código debe ejecutarse en el subproceso de interfaz de usuario, establezca la propiedad Interval y, a continuación, llame al método Start . El evento Tick se desencadena una vez transcurrido el tiempo especificado en Interval . Tick continúa activando al mismo Interval hasta que se llama al método Stop , finaliza la aplicación o se suspende la aplicación.

Un escenario para DispatcherTimer es comprobar las propiedades de los sensores en los que los cambios en los valores del sensor no están exclusivamente controlados por eventos o los eventos no proporcionan la granularidad que desee. Puede verlo en el ejemplo accelerómetro.

Otros escenarios para DispatcherTimer incluir la comprobación de cambios de estado que no tienen eventos relacionados o para actualizaciones periódicas de la interfaz de usuario que no pueden usar una animación con guion gráfico o un enlace bidireccional.

Constructores

DispatcherTimer()

Inicializa una nueva instancia de la clase DispatcherTimer .

Propiedades

Interval

Obtiene o establece la cantidad de tiempo entre tics del temporizador.

IsEnabled

Obtiene un valor que indica si el temporizador se está ejecutando.

Métodos

Start()

Inicia DispatcherTimer.

Stop()

Detiene DispatcherTimer.

Eventos

Tick

Se produce cuando ha transcurrido el intervalo del temporizador.

Se aplica a

Consulte también