Asynkron programmering med async/await
Computerspace · FGU · Programmering i C#
⚡ Hvad er asynkron programmering med async/await?
Asynkron programmering lader dit program udføre tidskrævende operationer (netværk, filer, databaser) uden at blokere resten af programmet.
Synkron vs. asynkron:
```csharp
// Synkron – blokerer tråden mens den venter
string data = DownloadSync("https://api.example.com/data");
// Program venter her... brugeren oplever at app "hænger"
// Asynkron – frigiver tråden mens den venter
string data = await DownloadAsync("https://api.example.com/data");
// Program kan lave andet imens – brugeren mærker intet
```
Task og async/await:
```csharp
// async metode returnerer Task eller Task<T>
public async Task<string> HentDataAsync(string url) {
using var client = new HttpClient();
string json = await client.GetStringAsync(url);
return json;
}
// Kald asynkron metode
public async Task Main() {
string data = await HentDataAsync("https://jsonplaceholder.typicode.com/posts/1");
Console.WriteLine(data);
}
```
HttpClient – web-kald:
```csharp
using System.Net.Http.Json;
var client = new HttpClient();
// GET request
var post = await client.GetFromJsonAsync<Post>("https://api.example.com/posts/1");
// POST request
var nytPost = new Post { Title = "Ny", Body = "Indhold" };
var svar = await client.PostAsJsonAsync("https://api.example.com/posts", nytPost);
```
Parallel asynkron kode:
```csharp
// Kør to opgaver parallelt
var opgave1 = HentDataAsync("url1");
var opgave2 = HentDataAsync("url2");
// Vent på begge er færdige
var (data1, data2) = await (opgave1, opgave2);
// Eller brug Task.WhenAll
string[] resultater = await Task.WhenAll(opgave1, opgave2);
```
---
🎓 Læringsmål for Asynkron programmering med async/await
Læringsmål
- Forstå forskellen på synkron og asynkron kode og hvornår asynkron er bedre
- Skrive async-metoder der returnerer Task og Task<T>
- Bruge await til at vente på asynkrone operationer uden at blokere
- Udføre HTTP-kald med HttpClient til web APIs
Sådan kan du arbejde med emnet
- Hvad er forskellen på synkron og asynkron programmering?
- Hvad er en Task i C#?
- Hvad gør async og await?
- Hvad er HttpClient og hvad bruges det til?
⚠️ Typiske fejl at undgå
- Async void – brug kun
async voidtil event handlers, aldrig til andre metoder - Blocking calls i async code – brug aldrig
.Resulteller.Wait()i async context - Glemmer await – uden await kører metoden synkront og returnerer en uafventet Task
---
💡 Tips til at komme i gang
- Start med at hente data fra en public API – fx JSONPlaceholder eller Open Meteo (vejr)
- Brug Task.WhenAll til at køre uafhængige operationer parallelt for bedre ydeevne
- Forstå CancellationToken – vigtigt til at annullere lange operationer
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis