Avatar ·

Como executar um método assíncrono Task<T> de forma síncrona em C#?

Olá a todos! Estou escrevendo um aplicativo de console em C# (.NET Framework 4.7.2) e encontrei um problema. Tenho um método assíncrono que retorna Task: ```csharp public async Task GetDataAsync() { using (var client = new HttpClient()) { var result = await client.GetStringAsync("https://api.example.com/data"); return result; } } ``` O problema é que estou chamando este método de um contexto síncrono, por exemplo, de um construtor de classe ou do método Main (que não é async). Não posso tornar o método chamador assíncrono, pois isso quebraria a arquitetura (por exemplo, um construtor não pode ser async). Tentei diferentes abordagens: - `GetDataAsync().Result` — o programa trava (deadlock). - `GetDataAsync().GetAwaiter().GetResult()` — também trava. - `Task.Run(() => GetDataAsync()).Result` — funciona, mas não tenho certeza se está correto. Por favor, me digam como executar corretamente um método assíncrono de forma síncrona sem deadlocks e com o mínimo de problemas.