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 Sie die Parallelitätsklasse::timer verwenden, um eine Nachricht in einem normalen Intervall zu senden.
Example
Im folgenden Beispiel wird während eines längeren Vorgangs der Status mithilfe eines timer-Objekts angezeigt. In diesem Beispiel wird das Objekt timer mit einem Objekt concurrency::call verknüpft. Das call-Objekt gibt in regelmäßigen Intervallen an der Konsole eine Statusanzeige aus. Die Methode concurrency::timer::start startet den Timer in einem separaten Kontext. Die perform_lengthy_operation Funktion ruft die Funktion concurrency::wait 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. Alternativ dazu können Sie ihn auch in eine Datei mit dem Namen report-progress.cpp einfügen und dann folgenden Befehl in einem Visual Studio-Eingabeaufforderungsfenster ausführen.
cl.exe /EHsc report-progress.cpp
Weitere Informationen
Asynchrone Agents Library
Asynchrone Nachrichtenblöcke
Funktionen zum Übergeben von Nachrichten