Преимущества использования асинхронных и ожидающих ключевых слов

Я новичок в использовании асинхронных методов в C #. Я прочитал, что эти ключевые словаasync а такжеawait помочь сделать программу более отзывчивой за счет асинхронизации некоторых методов. У меня есть этот фрагмент:

Первый путь

    public static void Main()
    {
        Console.WriteLine("Hello!! welcome to task application");
        Console.ReadKey();
        Task<string> ourtask = Task.Factory.StartNew<string>(() =>
        {
            return "Good Job";
        });
        ourtask.Wait();
        Console.WriteLine(ourtask.Result);
        Console.ReadKey();
    }

Второй путь

 public static void Main()
        {
            Launch();
        }
        public static async void Launch()
        {
            Console.WriteLine("Hello!! welcome to task application");
            Console.ReadKey();
            Console.WriteLine(await GetMessage());
            Console.ReadKey();
        }

        public static Task<string> GetMessage()
        {
            return Task.Factory.StartNew<string>(() =>
                {
                    return "Good Job";
                });
        }

Мне нужно знать :

Есть ли разница между двумя реализациями (в концепции параллелизма)?

Каковы преимущества использованияasync а такжеawait ключевые слова, если я могу просто создать задачу и ждать ее завершения?

Ответы на вопрос(4)

Ваш ответ на вопрос