第二十章:异步和文件I/O.(二)

从回调到等待

Page类定义了三种方法,可以显示有时称为警报或消息框的可视对象。 这样的框在屏幕上弹出一些信息或用户的问题。 警报框是模态的,这意味着在显示警报时应用程序的其余部分不可用。 在返回与应用程序交互之前,用户必须通过按下按钮来解除它。
Page类的这三种方法中有两种名为DisplayAlert。 第一个只显示一些带有一个按钮的文本以关闭该框,而第二个包含两个按钮,用于是或否响应。 DisplayActionSheet方法类似,但显示任意数量的按钮。
在iOS,Android和Windows运行时,这些方法是使用特定于平台的对象实现的,这些对象使用事件或回调方法通知应用程序警报框已被解除以及用户按下哪个按钮来关闭它。 但是,Xamarin.Forms已使用异步接口包装这些对象。
Page类的这三个方法定义如下:

Task DisplayAlert (string title, string message, string cancel)
Task<bool> DisplayAlert (string title, string message, string accept, string cancel)
Task<string> DisplayActionSheet (string title, string cancel, string destruction, 
                                 params string[] buttons)

它们都返回Task对象。 Task和Task 类在System.Threading.Tasks命名空间中定义,它们构成了基于任务的异步模式的核心,称为TAP。 TAP是在.NET中处理异步操作的推荐方法。任务并行库(TPL)建立在TAP之上。
相比之下,WebRequest的BeginGetResponse和EndGetResponse方法代表了涉及IAsyncResult的异步操作的旧方法。这种较旧的方法称为异步编程模型或APM。您可能还会遇到使用基于事件的代码
异步模型(EAP)通过事件从异步作业返回信息。
您已经在第15章“交互式界面”中看到了SetTimer程序中最简单的DisplayAlert形式.SetTimer使用警报来指示计时器何时消失。该程序似乎并不关心DisplayAlert返回的Task对象,因为警报框仅用于通知目的。没有必要从用户那里获得响应。但是,返回Task 和Task 的方法需要将实际信息传回给应用程序,指示用户按下哪个按钮来解除警报。
Task 的返回值有时被称为“promise”。实际值或对象尚未可用,但如果没有出错,它将来可用。
您可以通过几种不同的方式使用Task 对象。这些方法基本上是等价的,但C#语法却完全不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值