【问题标题】:Async and await keywords in metro apps?Metro 应用程序中的异步和等待关键字?
【发布时间】:2012-07-29 11:11:25
【问题描述】:

我是 Metro 应用程序开发的新手,请您帮助我了解 async 和 await 关键字的用法,

据我所知,我知道我们同时异步和等待两者。

但是,如果将一种方法/函数提到为异步:-

private async void Button_Click_1(object sender, RoutedEventArgs e)
{
    Uri inputUri  = new Uri("http://examplewebservices");

    try
    {

   string result =  await httpClient.GetStringAsync(inputUri);

///
i have to do some operations on this string result here 
///

    }
    catch (Exception ex)
    {

    }
}    

1)创建一个单独的线程会发生什么?内部的所有东西都是异步运行的?

2) await 关键字在这里做什么?

3)如果是异步的,代码中有地方我需要对字符串结果执行一些操作,如果没有完成会显示错误对吗?

请指导我。

提前致谢。

【问题讨论】:

    标签: microsoft-metro windows-runtime winrt-xaml winrt-async


    【解决方案1】:

    请阅读我的async/await intro

    1)创建一个单独的线程会发生什么?内部的所有东西都是异步运行的?

    没有。 async 方法是同步的,直到它们 await 一个未完成的操作。

    2) await 关键字在这里做什么?

    它将异步等待操作完成。

    在这种情况下,它将返回到消息循环并安排方法的其余部分在下载完成后运行(在 UI 线程上)。

    3)如果是异步的,代码中有地方我需要对字符串结果执行一些操作,如果没有完成会显示错误对吗?

    没有。由于await,在下载完成之前,该方法的其余部分不会运行。

    【讨论】:

    • 非常感谢您的回复。
    • @Stephen - 您对 Nitro 的介绍非常棒……尤其是关于并行运行的部分。非常感谢您的分享!
    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2012-04-28
    • 1970-01-01
    相关资源
    最近更新 更多