DispatcherTimer Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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é. |