Junior — Middle
Je možné provést asynchronní operaci synchronně a jak je to možné?
sobes.tech AI
Odpověď od AI
Ano, je možné provést asynchronní operaci synchronně tím, že aktuální vlákno počká na dokončení asynchronní úlohy. V C# se to často dělá pomocí metody Task.Wait() nebo vlastnosti Task.Result, které blokují provádění, dokud není výsledek získán.
Příklad:
using System;
using System.Threading.Tasks;
class Program
{
static async Task<int> AsyncOperation()
{
await Task.Delay(1000); // simulace asynchronní práce
return 42;
}
static void Main()
{
// Provádění asynchronní operace synchronně
int result = AsyncOperation().Result;
Console.WriteLine(result);
}
}
Nicméně je třeba být opatrný, protože tento přístup může vést k deadlocku, zejména v UI aplikacích. Je lepší používat plně asynchronní kód nebo aplikovat metody jako GetAwaiter().GetResult(), aby se předešlo problémům.