DispatcherTimer Classe

Definição

Fornece um temporizador integrado à fila do Dispatcher , que é processado em um intervalo de tempo especificado e em uma prioridade 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
Herança
Object IInspectable DispatcherTimer
Atributos

Exemplos

Este código de exemplo implementa um temporizador de estilo de console simples que grava dados em um TextBlock chamado TimerLog (XAML que define TimerLog não é mostrado). O valor de Intervalo é definido como 1 e o log exibe o tempo decorrido real para cada Tick.

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

Comentários

O DispatcherTimer código pode ser usado para executar o código no mesmo thread que produz o thread da interface do usuário. O código em execução nesse thread tem o privilégio de criar e modificar objetos que só podem ser criados e modificados no thread da interface do usuário. Para especificar que o código deve ser executado no thread da interface do usuário, defina a propriedade Interval e, em seguida, chame o método Start . O evento Tick é acionado após o tempo especificado ter Interval decorrido. Tick continua disparando ao mesmo tempo Interval até que o método Stop seja chamado, o aplicativo seja encerrado ou o aplicativo seja suspenso.

Um cenário para DispatcherTimer isso é verificar as propriedades em sensores em que as alterações nos valores do sensor não são puramente controladas por eventos ou os eventos não oferecem a granularidade desejada. Você pode ver isso no exemplo de Acelerômetro.

Outros cenários para DispatcherTimer incluir a verificação de alterações de estado que não têm eventos relacionados ou atualizações periódicas da interface do usuário que não podem usar uma animação com storyboard ou uma associação bidirecional.

Construtores

Nome Description
DispatcherTimer()

Inicializa uma nova instância da classe DispatcherTimer .

Propriedades

Nome Description
Interval

Obtém ou define a quantidade de tempo entre tiques de temporizador.

IsEnabled

Obtém um valor que indica se o temporizador está em execução.

Métodos

Nome Description
Start()

Inicia o DispatcherTimer.

Stop()

Interrompe o DispatcherTimer.

Eventos

Nome Description
Tick

Ocorre quando o intervalo do temporizador é decorrido.

Aplica-se a

Confira também