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