Выполнить веб-запрос в фоновом потоке, когда поток пользовательского интерфейса заблокирован
Почему следующий код выполняет веб-запросы через 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);
};