Программа завершается раньше времени при отправке GET запроса

Пытался создать HttpClient и сделать запрос, который вернул бы мне статус код. Но на строке

using var result = await client.GetAsync("https://google.com");

просто завершается программа без каких-либо ошибок. Подскажите что не так, или почему так происходит.
Вот мой код:

using System.Net.Sockets;
using System;
using System.Net.Http;


internal class Program
{
    static async void HttpTest()
    {
        Console.WriteLine("Приложение начало работу");
        using (var client = new HttpClient())
        {
            using var result = await client.GetAsync("https://google.com");
            Console.WriteLine(result.StatusCode);
        }
        Console.WriteLine("Приложение завершило работу");
    }

    static void Main(string[] args)
    {
        HttpTest();
    }
}

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

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

Не используйте async void

static async Task HttpTest()
{
    // ...ваш код
}

static async Task Main(string[] args)
{
    await HttpTest();
}

Как верно заметил @EvgeniyZ в комментарии, проблема в том что вы запускаете асинхронную задачу, и не дожидаетесь её завершения.

→ Ссылка
Автор решения: Faraday

Так у вас нет ожидания завершения операции. Да, внутри метода HttpTestвы используете await для ожидания, но весь метода HttpTest является асинхронным, по этому так же нужно ожидать его завершения при вызове.

Первый вариант, вы можете поставить в конце Main команду Console.ReadLine() для ожидания ввода с клавиатуры. Такой вызов поможет вам дождаться завершения исполнения метода HttpTest.

Второй вариант это использовать Task подобным образом:

static void Main(string[] args)
{
    Task httpTask = Task.Run(async () => { await HttpTest() });
    Task.WaitAll(httpTask)
}

UPD: Ещё стоит отметить, что у вас сам метод HttpTest возвращает void и в этом большая проблема, потому что void нельзя ожидать. При использовании асинхронных методов рекомендую заменить void на Task для контролированного завершения задач

→ Ссылка