swi*_*ter 7 c# asynchronous windows-phone windows-phone-8
如何在Windows Phone 8中使用等待 HttpWebRequest?
有没有办法让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();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Jon*_*eet 16
用于从/ 方法TaskFactory.FromAsync创建.然后你可以完全摆脱你的,并为响应做同样的事情.Task<Stream>BeginGetRequestStreamEndGetRequestStreamOnGotWebRequest
需要注意的是目前你调用EndGetResponse一个当BeginGetRequestStream调用完成,这是不合适的开始-你要调用EndFoo相匹配的方法BeginFoo,你原来叫.你的意思是打电话BeginGetResponse吗?
| 归档时间: |
|
| 查看次数: |
3543 次 |
| 最近记录: |