Avatar ·

Como chamar um método assíncrono a partir de um síncrono em C#? Problema com deadlock e await

Olá a todos! Sou novo em C# e estou tentando entender async/await. Tenho um aplicativo WinForms e estou usando uma biblioteca que fornece apenas métodos assíncronos (por exemplo, `HttpClient.SendAsync()`). O problema é que preciso chamar esse método assíncrono a partir de um método síncrono, que é chamado a partir de um evento de botão (button click). Não posso tornar todo o método assíncrono, pois isso quebra a lógica de outras partes do programa (por exemplo, chamada a partir do construtor ou de uma propriedade). Aqui está um exemplo simplificado do meu código: ```csharp public string GetData() { // Este é um método síncrono que deve retornar um resultado var client = new HttpClient(); var task = client.GetStringAsync("https://example.com"); task.Wait(); // Tento aguardar o resultado return task.Result; // Obtenho o resultado } ``` Mas isso leva a um deadlock (congelamento do programa). Li que isso é devido ao contexto de sincronização (SynchronizationContext), mas não entendo como corrigir corretamente.