2011-06-26 85 views
1

我不明白爲什麼EndGetResponse()在下面的代碼返回null:HttpWebRequest.EndGetResponse()在Windows Phone 7.1上返回null?

private void Application_Launching(object sender, LaunchingEventArgs e) 
    { 
     var request = WebRequest.Create("http://www.microsoft.com"); 
     using (var response = request.EndGetResponse(request.BeginGetResponse(ar => { }, null))) 
     using (var responseStream = response.GetResponseStream()) 
     using (var reader = new StreamReader(responseStream)) 
     { 
      string content = reader.ReadToEnd(); 
     } 
    } 

(繁殖,上面的代碼替換在新創建的Windows Phone應用程序的空Application_Launching處理)

這是一個框架中的錯誤嗎?

回答

2

顯然我犯了一個典型的noob錯誤,我敢阻止主/ UI線程。看來Silverlight希望不惜一切代價避免這種情況,並立即返回null來拒絕我的請求。好吧,但是拋出一個合適的異常而不是返回一個文檔甚至沒有提到的可能性的值是不是很好?

總之,這裏的更正後的代碼:

private void Application_Launching(object sender, LaunchingEventArgs e) 
    { 
     var request = WebRequest.Create("http://www.microsoft.com"); 
     var asyncResult = request.BeginGetResponse(
      ar => 
      { 
       using (var response = request.EndGetResponse(ar)) 
       using (var responseStream = response.GetResponseStream()) 
       using (var reader = new StreamReader(responseStream)) 
       { 
        string content = reader.ReadToEnd(); 
       } 
      }, null); 
    } 
相關問題