爲什麼下面的代碼在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