簡體   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