Comment : envoyer un message à intervalles réguliers
Cet exemple montre comment utiliser la classe concurrency ::timer pour envoyer un message à intervalle régulier.
Exemple
L’exemple suivant utilise un timer
objet pour signaler la progression pendant une longue opération. Cet exemple montre comment lier l’objet timer
à un objet concurrency ::call . L’objet call
imprime un indicateur de progression dans la console à intervalles réguliers. La méthode concurrency ::timer ::start exécute le minuteur dans un contexte distinct. La perform_lengthy_operation
fonction appelle la fonction concurrency ::wait sur le contexte principal pour simuler une opération fastidieuse.
// report-progress.cpp
// compile with: /EHsc
#include <agents.h>
#include <iostream>
using namespace concurrency;
using namespace std;
// Simulates a lengthy operation.
void perform_lengthy_operation()
{
// Yield the current context for one second.
wait(1000);
}
int wmain()
{
// Create a call object that prints a single character to the console.
call<wchar_t> report_progress([](wchar_t c) {
wcout << c;
});
// Create a timer object that sends the dot character to the
// call object every 100 milliseconds.
timer<wchar_t> progress_timer(100, L'.', &report_progress, true);
wcout << L"Performing a lengthy operation";
// Start the timer on a separate context.
progress_timer.start();
// Perform a lengthy operation on the main context.
perform_lengthy_operation();
// Stop the timer and print a message.
progress_timer.stop();
wcout << L"done.";
}
Cet exemple produit l’exemple de sortie suivant :
Performing a lengthy operation..........done.
Compilation du code
Copiez l’exemple de code et collez-le dans un projet Visual Studio, ou collez-le dans un fichier nommé report-progress.cpp
, puis exécutez la commande suivante dans une fenêtre d’invite de commandes Visual Studio.
cl.exe /EHsc report-progress.cpp
Voir aussi
Bibliothèque d’agents asynchrones
Blocs de messages asynchrones
Fonctions de passage de messages
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour