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.