十六、异步编程——messagedialog
1、异步方法不用等任务结束后就可以返回。异步编程可以避免界面卡死的问题,但是会导致编写“等待一个异步操作执行完成再执行一段代码”的程序很麻烦。
2、在.net4.5中引入了async await关键字,可以在异步方法调用前加入await关键字,这样方法中这一行之后的代码都将在异步方法执行完成后才执行。注意:一个方法中如果有await,则必须将方法中注明async。
3、可以直接在await前声明变量,当异步方法执行完成后把执行结果返回设置给变量,一般用var自动推断。
4、winRT中所有执行时间可能会比较长的操作都被微软强制设置为异步方法。
以MessageDialog为例
//方法内部只要出现await,方法就要标注为async
private async void Button_Click2(object sender, RoutedEventArgs e)
{
MessageDialog msg = new MessageDialog("hello");
msg.Commands.Add(new UICommand("yes") { Id=1});
msg.Commands.Add(new UICommand("no") { Id=2});
//异步方法都可以用await关键字
//只有等异步方法执行结束后,才继续往下执行,并且返回值中有执行结果。这就使得“好像同步”,但其实还是异步,只是编译器中的委托机制给我们的错觉
var result = await msg.ShowAsync();
if ((int)result.Id == 1)
{
}
else if ((int)result.Id == 2)
{
}
else
{
}
}
另外还可以参照连接(创建自定义的MessageDialog):http://www.cppblog.com/DinoLegend/archive/2012/10/11/193184.aspx
posted on 2012-12-07 16:38 gentle_girl 阅读(372) 评论(0) 编辑 收藏 举报