DispatcherTimer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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. |