Meer informatie over async en await
Opdracht 1
Maak een methode die asynchroon een begroeting ophaalt.
Specificaties
- Maak een methode (
VerwelkomAsync()
) die eenTask<string>
retourneert. - Laat deze methode na twee seconden
"Welkom terug!"
retourneren. - Roep deze methode aan met await en toon de output in de console.
Verwachte output
Welkom terug!
Nu jij
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
// Jouw code hier
}
// Maak hier de async methode aan
}
Mogelijke uitwerking
using System; using System.Threading.Tasks; class Program { static async Task Main() { string boodschap = await VerwelkomAsync(); Console.WriteLine(boodschap); } static async Task<string> VerwelkomAsync() { await Task.Delay(2000); return "Welkom terug!"; } }
Opdracht 2
Laat twee async operaties na elkaar uitvoeren.
Specificaties
- Maak twee methodes
Stap1Async()
enStap2Async()
die elk eenTask<string>
retourneren. - Laat beide methodes één seconde wachten en een string retourneren (“Stap 1 voltooid”, “Stap 2 voltooid”).
- Voer beide stappen na elkaar uit in
Main()
Verwachte output
Stap 1 voltooid
Stap 2 voltooid
Nu jij
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
string stap1 = _________ Stap1Async();
Console.WriteLine(stap1);
string stap2 = _________ Stap2Async();
Console.WriteLine(stap2);
}
static async _________ Stap1Async()
{
_________ Task.Delay(1000);
return "Stap 1 voltooid";
}
static async _________ Stap2Async()
{
_________ Task.Delay(1000);
return "Stap 2 voltooid";
}
}
Mogelijke uitwerking
using System; using System.Threading.Tasks; class Program { static async Task Main() { string stap1 = await Stap1Async(); Console.WriteLine(stap1); string stap2 = await Stap2Async(); Console.WriteLine(stap2); } static async Task<string> Stap1Async() { await Task.Delay(1000); return "Stap 1 voltooid"; } static async Task<string> Stap2Async() { await Task.Delay(1000); return "Stap 2 voltooid"; } }
Opdracht 3
Simuleer het ophalen van data van een API.
Specificaties
- Maak een methode
HaalDataOpAsync()
die “Data van server” retourneert na drie seconden wachten. - Laat in
Main()
zien dat het programma wacht, maar verdergaat (print bijvoorbeeld eerst “Start”). - Print daarna de opgehaalde data.
Verwachte output
Start
Data van server
Nu jij
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
Console.WriteLine("Start");
string data = _________;
}
static _________ _________ HaalDataOpAsync()
{
// Voeg async methode toe
return "Data van server";
}
}
Mogelijke uitwerking
using System; using System.Threading.Tasks; class Program { static async Task Main() { Console.WriteLine("Start"); string data = await HaalDataOpAsync(); Console.WriteLine(data); } static async Task<string> HaalDataOpAsync() { await Task.Delay(3000); return "Data van server"; } }
Opdracht 4
Laat twee async taken parallel uitvoeren.
Specificaties
- Maak twee methodes,
LaadAfbeeldingAsync()
enLaadTekstAsync()
. Beide methodes wachten twee seconden en retourneren een string. - Start beide methodes tegelijk en wacht tot ze klaar zijn.
- Toon beide resultaten in de console.
Verwachte output
Afbeelding geladen
Tekst geladen
Nu jij
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
_________<string> afbeeldingTask = LaadAfbeeldingAsync();
_________<string> tekstTask = LaadTekstAsync();
string[] resultaten = await _________;
foreach (var res in resultaten)
{
Console.WriteLine(res);
}
}
// Maak hier twee async methodes aan
}
Mogelijke uitwerking
using System; using System.Threading.Tasks; class Program { static async Task Main() { Task<string> afbeeldingTask = LaadAfbeeldingAsync(); Task<string> tekstTask = LaadTekstAsync(); string[] resultaten = await Task.WhenAll(afbeeldingTask, tekstTask); foreach (var res in resultaten) Console.WriteLine(res); } static async Task<string> LaadAfbeeldingAsync() { await Task.Delay(2000); return "Afbeelding geladen"; } static async Task<string> LaadTekstAsync() { await Task.Delay(2000); return "Tekst geladen"; } }
Opdracht 5
Simuleer een fout tijdens een async operatie.
Specificaties
- Maak een methode
LaadPaginaAsync()
die een fout gooit na twee seconden wachten. - Vang de fout af in
Main()
en toon “Fout bij laden: [foutmelding]“.
Verwachte output
Fout bij laden: Server reageert niet
Nu jij
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
try
{
_________
}
catch(Exception ex)
{
_________
}
}
// async methode hier
}
Mogelijke uitwerking
using System; using System.Threading.Tasks; class Program { static async Task Main() { try { await LaadPaginaAsync(); } catch (Exception ex) { Console.WriteLine($"Fout bij laden: {ex.Message}"); } } static async Task LaadPaginaAsync() { await Task.Delay(2000); throw new Exception("Server reageert niet"); } }