Why does await not wait?

Viewed 3416

This is my actual code:

    async Task getData()
    {
        Thread.Sleep(5000);
        Console.WriteLine("Step 1");

        using (HttpClient api = new HttpClient()) 
            await api.GetAsync("http://google.com/").ContinueWith(
                (getTask) =>
                    Console.WriteLine(getTask.Result.StatusCode);
            );

        Console.WriteLine("Step 2");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Task<Task> task = new Task<Task>(getData);
        task.Start();
        task.Wait();
        Console.WriteLine("Step 3");
    }

I get the following output:

Step 1
Step 3
OK
Step 2

Why does Step 3 not come after Step 2?

How do I get it to work in sequence, ie to return to the caller of getData only until everything in getData is done?

2 Answers
Related