Sobes.tech
Junior — Middle

Ar įmanoma atlikti asinchroninę operaciją sinchroniniu režimu ir kaip tai įmanoma?

sobes.tech AI

Atsakymas iš AI

Taip, galima atlikti asinchroninę operaciją sinchroniniu režimu, priversdami dabartinį srautą laukti asinchroninio užduoties pabaigos. C# dažnai tai daroma naudojant Task.Wait() metodą arba Task.Result savybę, kurios blokuoja vykdymą iki rezultato gavimo.

Pavyzdys:

using System;
using System.Threading.Tasks;

class Program
{
    static async Task<int> AsyncOperation()
    {
        await Task.Delay(1000); // asinchroninio darbo imitacija
        return 42;
    }

    static void Main()
    {
        // Asinchroninės operacijos vykdymas sinchroniniu režimu
        int result = AsyncOperation().Result;
        Console.WriteLine(result);
    }
}

Tačiau reikia būti atsargiems, nes toks požiūris gali sukelti deadlock'ą, ypač UI programose. Geriau naudoti visiškai asinchroninį kodą arba taikyti metodus kaip GetAwaiter().GetResult(), kad išvengtumėte problemų.