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.