Partager via


DispatcherTimer Classe

Définition

Fournit un minuteur intégré à la file d’attente dispatcher , qui est traitée à un intervalle de temps spécifié et à une priorité spécifiée.

/// [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
Héritage
Object IInspectable DispatcherTimer
Attributs

Exemples

Cet exemple de code implémente un minuteur de style console simple qui écrit des données dans un TextBlock nommé TimerLog (XAML qui définit TimerLog n’est pas affiché). La valeur Interval est définie sur 1 et le journal affiche le temps écoulé réel pour chaque 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 ...
}

Remarques

Peut être utilisé pour exécuter du DispatcherTimer code sur le même thread qui produit le thread d’interface utilisateur. Le code s’exécutant sur ce thread a le privilège de créer et de modifier des objets qui ne peuvent être créés et modifiés que sur le thread d’interface utilisateur. Pour spécifier que le code doit s’exécuter sur le thread d’interface utilisateur, définissez la propriété Interval , puis appelez la méthode Start . L’événement Tick se déclenche une fois que le temps spécifié dans Interval est écoulé. Tick continue de déclencher en même temps Interval jusqu’à ce que la méthode Stop soit appelée, que l’application se termine ou que l’application soit suspendue.

Un scénario pour DispatcherTimer consiste à case activée propriétés sur des capteurs où les modifications apportées aux valeurs des capteurs ne sont pas purement pilotées par les événements ou que les événements ne vous donnent pas la granularité souhaitée. Vous pouvez le voir dans l’exemple Accéléromètre.

D’autres scénarios incluent DispatcherTimer la vérification des changements d’état qui n’ont pas d’événements associés, ou des mises à jour périodiques de l’interface utilisateur qui ne peuvent pas utiliser une animation de storyboard ou une liaison bidirectionnelle.

Constructeurs

DispatcherTimer()

Initialise une nouvelle instance de la classe DispatcherTimer.

Propriétés

Interval

Obtient ou définit la durée entre les cycles du minuteur.

IsEnabled

Obtient une valeur qui indique si le minuteur est en cours d’exécution.

Méthodes

Start()

Démarre DispatcherTimer.

Stop()

Arrête dispatcherTimer.

Événements

Tick

Se produit lorsque l'intervalle de la minuterie s'est écoulé.

S’applique à

Voir aussi