Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird gezeigt, wie Nachrichten mithilfe der Concurrency::timer-Klasse in regelmäßigen Intervallen gesendet werden.
Beispiel
Im folgenden Beispiel wird während eines längeren Vorgangs der Status mithilfe eines timer-Objekts angezeigt. In diesem Beispiel wird das timer-Objekt mit einem Concurrency::call-Objekt verknüpft. Das call-Objekt gibt in regelmäßigen Intervallen an der Konsole eine Statusanzeige aus. Die Concurrency::timer::start-Methode führt den Zeitgeber in einem separaten Kontext aus. Die perform_lengthy_operation-Funktion ruft die Concurrency::wait-Funktion im Hauptkontext auf, um einen zeitaufwändigen Vorgang zu 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 ein, oder fügen Sie ihn in eine Datei mit dem Namen report-progress.cpp ein, und führen Sie dann den folgenden Befehl in einem Visual Studio 2010-Eingabeaufforderungsfenster aus.
cl.exe /EHsc report-progress.cpp