Sobes.tech
Middle

Чӣ гуна функсияи асинхронӣ дар C# кор мекунад?

sobes.tech AI

Ҷавоб аз AI

Дарсони 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 + " белгилар.");
}