Windows 8 异步编程.doc





《Windows 8 异步编程.doc》由会员分享,可在线阅读,更多相关《Windows 8 异步编程.doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本文由麦可网整理,转载请注明Windows 8 异步编程 在Windows 8里面很多API都封装成了异步的形式,因此异步编程成为了Windows 8的一大特色,同时也给Windows 8的应用更好的用户体验和简化了异步编程的复杂度。异步编程在Windows 运行时中是规范,而不是特例。JavaScript、C#、Visual Basic 和 C+ 都各自为异步方法提供了语言支持。许多 Windows 运行时功能,如 MediaCapture 和 StorageFile,都被公开为异步函数。按照惯例,异步函数的名称以 Async 结尾,表示当调用已返回后可能会发生其部分执行。当你在 Metro
2、 风格应用中使用异步 API 时,你的代码将以一致的方式进行非阻止调用。当你在 API 中实现这些异步模式后,调用者可以理解并按照可预知的方式使用你的代码。下面是一些需要调用异步 Windows 运行时 API 的常见任务。显示消息对话框。使用文件系统。向 Internet 发送数据和从 Internet 接收数据。有了 Windows 运行时异步 API 以后,你无需明确管理线程或直接与基础实现进行交互。每种编程语言都按照其自己的方式支持异步模式:编程语言异步表示形式JavaScript承诺对象,then 函数C#将来对象,await 运算符Microsoft Visual Basic .N
3、ET将来对象,Await 运算符Visual C+task类,.then 方法 下面来看一下一个获取网络信息的异步编程的例子C#版本UI CS页面using System;using System.Collections.Generic;using System.IO;using System.Linq;using Windows.Foundation;using Windows.Foundation.Collections;using Windows.UI.Xaml;using Windows.UI.Xaml.Controls;using Windows.UI.Xaml.Controls.P
4、rimitives;using Windows.UI.Xaml.Data;using Windows.UI.Xaml.Input;using Windows.UI.Xaml.Media;using Windows.UI.Xaml.Navigation;using Windows.Web.Syndication;namespace AsyncDemo public sealed partial class MainPage : Page public MainPage() this.InitializeComponent(); protected override void OnNavigate
5、dTo(NavigationEventArgs e) private async void Button_Click_1(object sender, RoutedEventArgs e) Windows.Web.Syndication.SyndicationClient client = new SyndicationClient(); client.BypassCacheOnRetrieve = true; Uri feedUri = new Uri( / 调用异步方法获取网络信息 SyndicationFeed feed = await client.RetrieveFeedAsync(
6、feedUri); /下面的代码在异步await 完成之后才开始执行 tb.Text = feed.Title.Text + Environment.NewLine; foreach (SyndicationItem item in feed.Items) tb.Text += item.Title.Text + , + item.PublishedDate.ToString() + Environment.NewLine; 对异步方法 RetrieveFeedAsync 的调用,行 SyndicationFeed feed = await client.RetrieveFeedAsync(f
7、eedUri) 使用 await 运算符。假如使用的是同步方法的时候,UI会一直卡住一直等到网络请求完成之后才会释放掉UI的线程。但如果你调用 client.RetrieveFeedAsync,则方法启动检索并立即返回。当你将 await 与 RetrieveFeedAsync 结合使用时,应用临时退出事件处理程序。然后,它便可以在 RetrieveFeedAsync 异步执行时处理其他事件。 这样便可以保持应用对用户进行响应。 当 RetrieveFeedAsync 完成并且 SyndicationFeed 可用时,应用一定会在 SyndicationFeed feed = await cl
8、ient.RetrieveFeedAsync(feedUri) 之后重新进入它停止的事件处理程序,并完成方法的剩余部分。返回异步 API 的类型和结果如果你跟随指向 RetrieveFeedAsync 的链接,那么你可能会注意到 RetrieveFeedAsync 的返回类型不是 SyndicationFeed。 返回类型为 IAsyncOperationWithProgress 。 异步 API 返回一个包含结果的对象。 尽管该对象很常见,但有时却很有用,若要将异步方法视为可等待的方法,await 运算符实际上对该方法的返回值执行操作,而不是对该方法执行操作。 当你应用 await 运算符时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 异步编程 异步 编程

限制150内