【发布时间】:2015-04-16 09:30:49
【问题描述】:
private async void refresh_Tapped(object sender, TappedRoutedEventArgs e)
{
httpclient.CancelPendingRequests();
string url = "http://gensav.altervista.org/";
var source = await httpclient.GetStringAsync(url); //PROBLEM
source = WebUtility.HtmlDecode(source);
HtmlDocument result = new HtmlDocument();
result.LoadHtml(source);
List<HtmlNode> toftitle = result.DocumentNode.Descendants().Where
(x => (x.Attributes["style"] != null
&& x.Attributes["style"].Value.Contains("font-size:14px;line-height:20px;margin-bottom:10px;"))).ToList();
var li = toftitle[0].InnerHtml.Replace("<br>", "\n");
li = li.Replace("<span style=\"text-transform: uppercase\">", "");
li = li.Replace("</span>", "");
postTextBlock.Text = li;
}
这段代码所做的基本上是从网站中检索一个字符串(HTML 源代码在之后被解析)。每当我单击按钮时都会执行此代码:第一次单击它时它可以正常工作,但是第二次我认为该方法(GetStringAsync)返回一个未完成的任务,然后使用 source。确实,我的 TextBlock 没有更新。
有什么办法吗?
【问题讨论】:
-
我认为方法 (GetStringAsync) 返回一个未完成的任务 这不太可能。你确定你调试正确吗?你怎么称呼这段代码?
-
我在“Tapped”事件的事件处理程序中调用它
-
你能添加那个代码吗?
-
你试过在没有
httpclient.CancelPendingRequests()的情况下执行这段代码吗?另外,您似乎总是在查询同一个源站点,您确定这是您想要做的吗? -
是的,我试过了,没有任何变化。是的,我想查询同一个站点,因为它总是生成不同的字符串
标签: windows windows-phone-8 windows-phone windows-phone-8.1 dotnet-httpclient