Sobes.tech
Middle

Kako radi asinhrona metoda u C#?

sobes.tech АИ

Одговор од АИ

Асимптон метод у C# омогућава извршавање операција које могу трајати дуже време (нпр. унос/излаз, мрежни захтеви), без блокирања главног тока извршавања.

Када се позове асинхрона метода означена кључном речи async, контролу преноси на код који је позвао док асинхрона операција не заврши. Операција се извршава у позадини (нпр. коришћењем пулова нити или системских механизама уноса/износа).

Кључна реч await унутар асинхроне методе указује место где операција може бити заустављена. Када достигне await, контролу се враћа позивајућем коду, а наставак методе се планира да се изврши када очекивана операција заврши.

Резултат асинхроне операције (или изузетак) се накнадно враћа у наставак асинхроне методе, где се обрађује. Стање асинхроне методе аутоматски управља компилатор C#, који је претвара у крајњи аутомат.

public async Task<string> GetDataAsync(string url)
{
    // Симулација дуготрајне операције уноса/износа
    using (var httpClient = new HttpClient())
    {
        string result = await httpClient.GetStringAsync(url); // await: извршавање методе може бити заустављено
        return result;
    }
}

// Пример позива асинхроне методе
public async Task ProcessDataAsync(string url)
{
    Console.WriteLine("Почетак учитавања података...");
    string data = await GetDataAsync(url); // Чекање на завршетак асинхроне операције
    Console.WriteLine("Податци учитани: " + data.Length + " карактера.");
}