Freigeben über


Gewusst wie: Senden einer Nachricht in regelmäßigen Intervallen

In diesem Beispiel wird veranschaulicht, wie mithilfe der concurrency::timer -Klasse, um in regelmäßigen Abständen eine Nachricht senden.

Beispiel

Im folgenden Beispiel wird während eines längeren Vorgangs der Status mithilfe eines timer-Objekts angezeigt.Dieses Beispiel bindet die timer -Objekts in ein concurrency::call Objekt.Das call-Objekt gibt in regelmäßigen Intervallen an der Konsole eine Statusanzeige aus.Die Concurrency::timer::start Methode wird den Zeitgeber in einem separaten Kontext ausgeführt.Die perform_lengthy_operation Funktionsaufrufe der concurrency::wait -Funktion auf den Kontext der wichtigsten ein zeitaufwändigen Vorgangs simulieren.

// 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.";
}

Dieses Beispiel erzeugt die folgende Beispielausgabe:

Performing a lengthy operation..........done.

Kompilieren des Codes

Kopieren Sie den Beispielcode und fügen Sie ihn in ein Visual Studio Projekt, oder fügen Sie ihn in eine Datei mit dem Namen Bericht progress.cpp und führen Sie den folgenden Befehl in ein Visual Studio-Eingabeaufforderungsfenster.

cl.exe /EHsc report-progress.cpp

Siehe auch

Referenz

timer-Klasse

Konzepte

Asynchronous Agents Library

Asynchrone Nachrichtenblöcke

Funktionen zum Übergeben von Meldungen