Блокируется форма, при использовании HttpClient'а в async методе

Использую async метод, чтобы получить html со страницы, но форма блокируется:

public partial class Test : Form
{
    HttpClient httpClient = new HttpClient();

    public async Task<string> GetSource(string url)
    {
        using (HttpResponseMessage result = await httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false))
        {
            result.EnsureSuccessStatusCode();
            return await result.Content.ReadAsStringAsync();
        }
    }

    private async Task GetSourcePage()
    {
        string s = await GetSource("ссылка");
    }

    private async void StartButtonClick(object sender, EventArgs e)
    {
        try
        {
            await GetSourcePage();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

В чём может быть проблема?


Ответы (2 шт):

Автор решения: CrazyElf

Используйте асинхронный вариант обработки события:

async void StartButtonClick(object sender, EventArgs e)
{
    await GetSourcePage();
}
→ Ссылка
Автор решения: Aimon Z.

https://stackoverflow.com/questions/56029988/sendasync-is-blocking-ui-thread

GetAsync использует метод SendAsync

К сожалению, по историческим причинам SendAsync не является чисто асинхронным. В частности, он синхронно выполняет поиск DNS и разрешение прокси. Итак, чтобы сделать это полностью неблокирующим, вам нужно будет обернуть этот вызов в Task.Run

→ Ссылка