Sobes.tech
Middle

Hoe werkt een asynmethode in C#?

sobes.tech AI

Antwoord van AI

De asynchrone methode in C# maakt het mogelijk om bewerkingen uit te voeren die lang kunnen duren (bijvoorbeeld invoer/uitvoer, netwerkverzoeken), zonder het hoofdthread van uitvoering te blokkeren.

Wanneer een met het sleutelwoord async gemarkeerde asynchrone methode wordt aangeroepen, wordt de controle overgedragen aan de aanroepende code totdat de asynchrone operatie is voltooid. De operatie wordt op de achtergrond uitgevoerd (bijvoorbeeld met behulp van een threadpool of systeem-I/O-mechanismen).

Het sleutelwoord await binnen de asynchrone methode geeft aan waar de asynchrone operatie kan worden onderbroken. Wanneer de uitvoering await bereikt, wordt de controle teruggegeven aan de aanroepende code, en wordt de voortzetting van de methode gepland om uit te voeren wanneer de verwachte operatie is voltooid.

Het resultaat van de asynchrone operatie (of een uitzondering) wordt vervolgens teruggegeven aan de voortzetting van de asynchrone methode, waar het wordt verwerkt. De toestand van de asynchrone methode wordt automatisch beheerd door de C#-compiler, die deze omzet in een eindige automaat.

public async Task<string> GetDataAsync(string url)
{
    // Simulatie van een langdurige invoer/uitvoer-operatie
    using (var httpClient = new HttpClient())
    {
        string result = await httpClient.GetStringAsync(url); // await: de uitvoering van de methode kan worden onderbroken
        return result;
    }
}

// Voorbeeld van het aanroepen van een asynchrone methode
public async Task ProcessDataAsync(string url)
{
    Console.WriteLine("Begin met het laden van gegevens...");
    string data = await GetDataAsync(url); // Wachten tot de asynchrone operatie is voltooid
    Console.WriteLine("Gegevens geladen: " + data.Length + " tekens.");
}