N296 Async (whenall)
I denne opgave skal du hente HTML fra forsiden på https://www.teknologisk.dk, og gemme dette i tre forskellige filer - alt sammen asynkront.
- Start med at skabe en tom .net konsol applikation
- Skriv “Start” på konsol
- Hent ved hjælp af HttpClient’s GetStringAsync metode HTML fra https://www.teknologisk.dk
- Skriv hvor mange tegn der er hentet
- Gem nu HTML i tre forskellige filer ved hjælp af System.IO.File.AppendAllTextAsync.
- Da de tre task ikke er afhængige af hinanden kan du benytte Task.WhenAll til at vente på at alle operationer er gennemført
- Skriv på konsol når en fil er gemt
- Skriv “Slut” på konsol
- Det skal se nogenlunde således ud:
Klik for at se et forslag til en løsning
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace async_gemhtml
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("Start");
using HttpClient c = new HttpClient();
Console.WriteLine("Henter HTML");
string html = await c.GetStringAsync("https://www.teknologisk.dk");
Console.WriteLine($"Henter hentet - {html.Length} tegn");
Console.WriteLine("Gemmer fil1");
Task t1 = System.IO.File.AppendAllTextAsync("c:\\temp\\fil1.html", html);
Console.WriteLine("Gemmer fil2");
Task t2 = System.IO.File.AppendAllTextAsync("c:\\temp\\fil2.html", html);
Console.WriteLine("Gemmer fil3");
Task t3 = System.IO.File.AppendAllTextAsync("c:\\temp\\fil3.html", html);
await Task.WhenAll(t1, t2, t3);
Console.WriteLine("Slut");
}
}
}