Выполнить веб-запрос в фоновом потоке, когда поток пользовательского интерфейса заблокирован

Почему следующий код выполняет веб-запросы через 5 секунд, когда поток пользовательского интерфейса больше не блокируется?Thread.Sleep находится в потоке пользовательского интерфейса, в то время как как экземпляр, так и вызов веб-запросов происходят внутри потока из ThreadPool.

Loaded += (sender, args) => {

    for (int i = 0; i < 5; i++) {

        ThreadPool.QueueUserWorkItem(state => {
            var request = WebRequest.CreateHttp("http://google.com");
            request.BeginGetResponse(ar => Debug.WriteLine("Request finished"), null);
        });

        Thread.Sleep(1000);
    }

};

Какой код я должен написать, чтобы выполнить WebRequest в фоновом потоке, в то время как поток пользовательского интерфейса заблокирован?

РЕДАКТИРОВАТЬ: ... чтобы быть более конкретным. Почему этот запрос выполняется через 10 секунд, поскольку он находится в фоновом потоке?

Loaded += (sender, args) => {

    ThreadPool.QueueUserWorkItem(state => {
        var request = WebRequest.CreateHttp("http://google.com");
        request.BeginGetResponse(ar => Debug.WriteLine("Request finished"), null);
    });
    Thread.Sleep(10000);

};

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

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