异步编程(Windows 运行时应用)

Applies to Windows and Windows Phone

使用异步编程可帮助你的应用在完成可能花费较长时间的工作时保持响应。例如,从 Internet 下载内容的应用等待内容到达可能要花费数秒钟。如果你在 UI 线程中使用同步方法来检索内容,则应用会在方法返回之前被阻止。应用将不会响应用户交互,而且因为无响应的原因,所以用户可能会感到沮丧。使用异步编程效果更佳。采用此方式时,应用在等待操作完成时继续运行并响应 UI。

对于可能花费较长时间才能完成的方法,异步编程在 Windows 运行时中是规范,而不是特例。JavaScript、C#、Visual Basic 和 C++/CX 都各自为异步方法提供了语言支持。

Windows 运行时中的异步编程

许多 Windows 运行时功能,如 MediaCapture API 和 StorageFile API,都被公开为异步 API。按照惯例,异步 API 的名称以 "Async" 结尾,表示当调用该 API 后可能会发生其部分执行。

当你在 Windows 运行时应用中使用异步 API 时,你的代码将以一致的方式进行非阻止调用。当你在你自己的 API 定义中实现这些异步模式后,调用方可以理解并按照可预知的方式使用你的代码。

下面是一些需要调用异步 Windows 运行时 API 的常见任务。

  • 显示消息对话框

  • 使用文件系统,显示文件选取器

  • 向 Internet 发送数据和从 Internet 接收数据

  • 使用套接字、流、连接性

  • 使用约会、联系人、日历

  • 使用文件类型,例如打开可移植文档格式 (PDF) 文件,或者解码图像或媒体格式

  • 与设备或服务交互

有了 Windows 运行时异步 API 以后,你无需明确管理线程或直接与基础实现进行交互。

每种编程语言都按照其自己的方式支持用于 Windows 运行时的异步模式:

编程语言异步表示形式
JavaScript 承诺对象,then 函数
C#async 关键字、await 运算符
Visual BasicAsync 关键字、Await 运算符
C++/CXtask 类,.then 方法

 

使用 JavaScript 的 Windows 运行时应用中的异步模式

在 JavaScript 中,异步编程通过让异步方法返回 promise 对象而遵循 Common JS Promises/A 建议标准。承诺可在 Windows 运行时和 Windows JavaScript 库中使用。

一个承诺对象表示一个将在未来实现的值。 在 Windows 运行时中,从工厂函数获取 promise 对象,该函数名称按约定以 "Async" 结尾。

在许多情况下,调用异步函数几乎与调用传统函数一样简单。区别在于使用 thendone 方法来指定结果或错误的处理程序以及启动操作。

使用 C# 和 Visual Basic 的 Windows 运行时应用中的异步模式

用 C# 或 Visual Basic 编写的典型代码段同步执行,这意味着当一个行执行时,它会在下一个行执行之前完成。尽管之前已有用于异步执行的 Microsoft .NET 编程模型,但生成的代码趋向于强调执行异步代码的技术,而不是专注于代码要尝试完成的任务。 Windows Runtime、.NET Framework 以及 C# 和 Visual Basic 编译器已添加了可从你的代码中提取异步机制的功能。对于 .NET 和 Windows 运行时,你可以编写异步代码,该代码关注于你的代码要做什么,而不是如何做以及何时做。 你的异步代码看起来将非常类似于同步代码。有关详细信息,请参阅快速入门:使用 C# 或 Visual Basic 调用异步 API

使用 C++ 的 Windows 运行时应用中的异步模式

在 C++/CX 中, 异步编程基于 task class 及其 then method。语法与 JavaScript 承诺的语法类似。task class 类及其相关类型还提供取消和管理线程上下文的功能。 有关详细信息,请参阅使用 C++ 进行异步编程

create_async function 提供了相应的支持,以便生成可以通过 JavaScript 或其他支持 Windows 运行时的语言使用的异步 API。有关详细信息,请参阅使用 C++ 创建异步操作

相关主题

使用 JavaScript 异步编程
快速入门:使用 C# 或 Visual Basic 调用异步 API
使用 Async 和 Await(C# 和 Visual Basic)进行异步编程
Reversi 示例功能方案:异步代码

 

 

显示:
© 2014 Microsoft