在城域应用程序中异步和等待关键字?

时间:2012-07-29 11:11:26

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

我是都市应用程序开发的新手,我请求您帮助我了解异步的用法并等待关键词,

据我所知,我知道我们同时等待并等待两者。

但是如果提到一个方法/函数为async: -

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)如果它是异步的,那么在代码中我需要对字符串结果执行一些操作,如果没有完成它会显示错误吗?

请指导我。

先谢谢。

1 个答案:

答案 0 :(得分:4)

请阅读我的async/await intro

  

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

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

  

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

它会异步等待操作完成。

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

  

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

没有。由于await,该方法的其余部分将在下载完成后才会运行。