Sobes.tech
Junior — Middle

Je možné vykonať asynchrónnu operáciu synchronizovane a ako je to možné?

sobes.tech AI

Odpoveď od AI

Áno, je možné vykonať asynchrónnu operáciu synchronizovaným spôsobom, nútiac aktuálny vlákno čakať na dokončenie asynchrónnej úlohy. V C# sa to často robí pomocou metódy Task.Wait() alebo vlastnosti Task.Result, ktoré blokujú vykonávanie, kým sa nedosiahne výsledok.

Príklad:

using System;
using System.Threading.Tasks;

class Program
{
    static async Task<int> AsyncOperation()
    {
        await Task.Delay(1000); // simulácia asynchrónnej práce
        return 42;
    }

    static void Main()
    {
        // Vykonanie asynchrónnej operácie synchronizovaným spôsobom
        int result = AsyncOperation().Result;
        Console.WriteLine(result);
    }
}

Avšak, je potrebné byť opatrný, pretože tento prístup môže viesť k deadlocku, najmä v UI aplikáciách. Je lepšie používať úplne asynchrónny kód alebo aplikovať metódy ako GetAwaiter().GetResult(), aby ste predišli problémom.