Partilhar via


DispatcherTimer Classe

Definição

Fornece um temporizador integrado à fila do Dispatcher , que é processada 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 Interval é 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 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 chame o método Start . O evento Tick é acionado após o tempo especificado em Interval ter 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 é marcar propriedades em sensores em que as alterações nos valores do sensor não são puramente controladas por DispatcherTimer 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 para 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

DispatcherTimer()

Inicializa uma nova instância da classe DispatcherTimer .

Propriedades

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

Start()

Inicia o DispatcherTimer.

Stop()

Interrompe o DispatcherTimer.

Eventos

Tick

Ocorre quando termina o intervalo do temporizador.

Aplica-se a

Confira também