7

Windows Phone 8 で HttpWebRequest でawaitを使用するにはどうすればよいですか?

IAsyncResult を await で動作させる方法はありますか?

private async Task<int> GetCurrentTemperature()
{
  GeoCoordinate location = GetLocation();

  string url = "http://free.worldweatheronline.com/feed/weather.ashx?q=";
  url += location.Latitude.ToString();
  url += ",";
  url += location.Longitude.ToString();
  url += "&format=json&num_of_days=1&key=MYKEY";

  HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
  webRequest.Method = "POST";
  webRequest.BeginGetResponse(new AsyncCallback(OnGotWebRequest), webRequest);
}

private void OnGotWebRequest(IAsyncResult asyncResult)
{
  HttpWebRequest webRequest = (HttpWebRequest)asyncResult.AsyncState;
  var httpResponse = (HttpWebResponse)webRequest.EndGetResponse(asyncResult);
  using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
  {
    string responseText = streamReader.ReadToEnd();
  }
}

ありがとう!

4

2 に答える 2

16

/メソッドからTaskFactory.FromAsyncを作成するために使用します。次に、完全に自分を取り除き、応答に対して同じことを行うことができます。Task<Stream>BeginGetRequestStreamEndGetRequestStreamOnGotWebRequest

EndGetResponse現在、呼び出しが完了したときに呼び出しを行っていることに注意してください。BeginGetRequestStreamこれは最初から不適切です。最初に呼び出したEndFooメソッドと一致するようにメソッドを呼び出す必要がありBeginFooます。電話するつもりだったのBeginGetResponse

于 2012-12-05T22:38:48.407 に答える
4

Microsoft.Bcl.AsyncパッケージをインストールするとasyncHttpWebRequest.

于 2012-12-06T01:50:21.907 に答える