Sobes.tech
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.