gpt4 book ai didi

c# - 有没有办法在 Windows Phone 8 中等待 IAsyncResult?

转载 作者:太空狗 更新时间:2023-10-29 19:53:51 25 4
gpt4 key购买 nike

如何在 Windows Phone 8 中使用 await 和 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();
}
}

谢谢!

最佳答案

使用 TaskFactory.FromAsync 创建一个 Task<Stream>来自 BeginGetRequestStream/EndGetRequestStream方法。然后你可以摆脱你的 OnGotWebRequest完全,并对响应做同样的事情。

请注意,当前您正在调用 EndGetResponseBeginGetRequestStream调用完成,开始是不合适的 - 你必须调用 EndFoo匹配 BeginFoo 的方法你最初打电话。你是不是想调用BeginGetResponse

关于c# - 有没有办法在 Windows Phone 8 中等待 IAsyncResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com