Avatar ·

Comment appeler une méthode asynchrone depuis une méthode synchrone en C# ? Problème de deadlock et await

Bonjour à tous ! Je suis débutant en C# et j'essaie de comprendre async/await. J'ai une application WinForms et j'utilise une bibliothèque qui ne fournit que des méthodes asynchrones (par exemple, `HttpClient.SendAsync()`). Le problème est que je dois appeler cette méthode asynchrone depuis une méthode synchrone, qui est appelée depuis un événement de bouton (button click). Je ne peux pas rendre toute la méthode asynchrone, car cela perturbe la logique d'autres parties du programme (par exemple, un appel depuis le constructeur ou une propriété). Voici un exemple simplifié de mon code : ```csharp public string GetData() { // C'est une méthode synchrone qui doit retourner un résultat var client = new HttpClient(); var task = client.GetStringAsync("https://example.com"); task.Wait(); // J'essaie d'attendre le résultat return task.Result; // J'obtiens le résultat } ``` Mais cela provoque un deadlock (le programme se bloque). J'ai lu que c'est à cause du contexte de synchronisation (SynchronizationContext), mais je ne comprends pas comment le résoudre correctement.