我正在开发一款适用于Windows Phone的应用程序,我没有人帮助我...... 我有一个按钮,当点击它时,显示页面的正文内容。
在搜索了很多关于如何下载内容但没有冻结de UI之后,我发现这段代码对我来说很合适:
private async void btnBotao_Click(object sender, RoutedEventArgs e)
{
string returnedTaskTResult = await AccessTheWebAsync();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(returnedTaskTResult);
var body = doc.DocumentNode.SelectSingleNode("//body").WriteContentTo();
txb.Text = body;
}
public async Task<string> AccessTheWebAsync()
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("PAGE");
string urlContents = await getStringTask;
return urlContents;
}
我只是想知道这样做是否正确...因为我对线程几乎一无所知,即使这对我有用,也许这不是更好的方法来做到这一点......也许这是不完整的......
非常感谢!!
答案 0 :(得分:1)
如果我没有完全错误,你可以这样写:
Task<string> getStringTask = client.GetStringAsync("PAGE");
string urlContents = await getStringTask;
return urlContents;
也是这样的:
return await client.GetStringAsync("PAGE");
(稍微简单一些,代码更少,对我来说是件好事)当谈到逻辑部分时,如果使用await / async,框架将处理大部分内容。所以我没有看到任何导致问题的东西
答案 1 :(得分:1)
看起来不错 - 我唯一要改变的是简化语法:
public async Task<string> AccessTheWebAsync()
{
HttpClient client = new HttpClient();
return await client.GetStringAsync("PAGE");
}
你甚至可以完全删除“AccessTheWeb”功能,因为它只适合一行:
private async void btnBotao_Click(object sender, RoutedEventArgs e)
{
string returnedTaskTResult = await new HttpClient().GetStringAsync("PAGE");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(returnedTaskTResult);
var body = doc.DocumentNode.SelectSingleNode("//body").WriteContentTo();
txb.Text = body;
}