Junior — Middle
Is het mogelijk om een asynchrone operatie in een synchronisatie modus uit te voeren en hoe is dat mogelijk?
sobes.tech AI
Antwoord van AI
Ja, het is mogelijk om een asynchrone operatie uit te voeren in synchronisatie modus, door de huidige thread te laten wachten tot de asynchrone taak voltooid is. In C# wordt dit vaak gedaan met de methode Task.Wait() of de eigenschap Task.Result, die de uitvoering blokkeert totdat het resultaat beschikbaar is.
Voorbeeld:
using System;
using System.Threading.Tasks;
class Program
{
static async Task<int> AsyncOperation()
{
await Task.Delay(1000); // simulatie van asynchroon werk
return 42;
}
static void Main()
{
// Uitvoeren van een asynchrone operatie in synchronisatie modus
int result = AsyncOperation().Result;
Console.WriteLine(result);
}
}
Echter, wees voorzichtig, want deze aanpak kan leiden tot deadlock, vooral in UI-toepassingen. Het is beter om volledig asynchrone code te gebruiken of methoden zoals GetAwaiter().GetResult() toe te passen om problemen te voorkomen.