Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du använder klassen concurrency::timer för att skicka ett meddelande med jämna mellanrum.
Exempel
I följande exempel används ett timer objekt för att rapportera förloppet under en lång åtgärd. Det här exemplet länkar objektet timer till ett concurrency::call-objekt. Objektet call skriver ut en förloppsindikator till konsolen med jämna mellanrum. Metoden concurrency::timer::start kör timern i en separat kontext. Funktionen perform_lengthy_operationanropar funktionen concurrency::wait i huvudkontexten för att simulera en tidskrävande åtgärd.
// 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.";
}
I det här exemplet skapas följande exempelutdata:
Performing a lengthy operation..........done.
Kompilera koden
Kopiera exempelkoden och klistra in den i ett Visual Studio-projekt, eller klistra in den i en fil med namnet report-progress.cpp och kör sedan följande kommando i ett Visual Studio-kommandotolkfönster.
cl.exe /EHsc report-progress.cpp
Se även
Asynkront agentbibliotek
Asynkrona meddelandeblock
Funktioner för meddelandeöverföring