I was reading a chapter about the await and async keywords in my C# book. It was mainly explaining these kinds of method calls, where the caller uses the await keyword to wait for the called method to finish.
In this simple example I see no advantage but more importantly no difference in these 3 calls. Can anyone explain what difference it makes to the flow of the application? Is it only useful when the calling thread is the main GUI thread?
static async Task Main(string[] args)
{
    WriteText();
    await WriteTextAsync();
    WriteTextAsync().Wait();
}
static void WriteText()
{
    Thread.Sleep(3_000);
    Console.WriteLine("Hello");
}
static async Task WriteTextAsync()
{
    await Task.Run(() =>
    {
        Thread.Sleep(3_000);
        Console.WriteLine("Hello");
    });
}
Ps: If the calling thread of the method is waiting for the method to finish anyway it might as well be a normal call?

