为什么下面的代码在5秒后执行WebRequests时UI线程不再被阻塞? Thread.Sleep
位于UI线程中,而WebRequest的实例化和调用都发生在ThreadPool的线程内。当UI线程被阻塞时在后台线程中执行WebRequest
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);
}
};
我应该写什么代码才能在UI线程被阻塞时在后台线程中执行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);
};
谢谢您的回答。我知道你的解决方案有效,但这不是我正在寻找的。请看我编辑的问题。 – djsolid