Sobes.tech
Junior — Middle

Este posibil să efectuați o operație asincronă în mod sincron și cum este posibil acest lucru?

sobes.tech AI

Răspuns de la AI

Da, este posibil să realizați o operațiune asincronă în mod sincron, forțând firul curent să aștepte finalizarea sarcinii asincrone. În C#, acest lucru se face adesea folosind metoda Task.Wait() sau proprietatea Task.Result, care blochează execuția până se obține rezultatul.

Exemplu:

using System;
using System.Threading.Tasks;

class Program
{
    static async Task<int> AsyncOperation()
    {
        await Task.Delay(1000); // simulare de muncă asincronă
        return 42;
    }

    static void Main()
    {
        // Executarea unei operațiuni asincrone în mod sincron
        int result = AsyncOperation().Result;
        Console.WriteLine(result);
    }
}

Totuși, trebuie avut grijă, deoarece această abordare poate duce la blocaje, mai ales în aplicațiile UI. Este mai bine să folosiți cod complet asincron sau să aplicați metode precum GetAwaiter().GetResult() pentru a evita problemele.