繁体   English   中英

Windows Phone中的异步任务

[英]Async Task in Windows Phone

我正在为Windows Phone开发一个应用程序,没有人帮我...我有一个按钮,当单击该按钮时,它会显示页面的正文内容。

在搜索了很多有关如何下载内容而不冻结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;
        }

我只是想知道这种方式是否正确...因为我对线程几乎一无所知,即使这对我有用,也许这不是更好的方式...也许这是不完整的...

很感谢!!

如果我没有完全错,可以这样写:

        Task<string> getStringTask = client.GetStringAsync("PAGE");

        string urlContents = await getStringTask;

        return urlContents;

也像这样:

return await client.GetStringAsync("PAGE");

(仅需简单一些的代码,对我来说是一件好事)对于逻辑部分,如果您使用await / async,则该框架将处理大部分内容。 所以我看不到任何会引起问题的东西

看起来不错-我唯一要更改的就是简化语法:

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM