2011-06-26 2 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を返すことでリクエストを拒否しているようです。 [OK]を、ドキュメントが可能性として言及していない値を返す代わりに、適切な例外をスローすることはいいですか?

とにかく、ここで修正されたコードです:

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); 
    } 
関連する問題