写点什么

WinRT:超越 async 与 await

  • 2012-05-21
  • 本文字数:603 字

    阅读完需:约 2 分钟

新的 Windows Runtime(WinRT)的目标之一就是为开发者进行异步编程提供更好的支持。借助于异步操作,程序可以在其他操作(诸如文件 I/O 或是网络通信)尚未结束的情况下保持对用户的响应。这种响应性对于大多数用户应用来说都是很有用的,包括触摸界面,用户在这种情况下希望手势能有快速的反馈。

为了实现这个目的,C#与 Visual Basic 程序员通过“ await/async ”关键字来实现异步操作,同时又不会造成程序控制流的过分复杂。遵循 async API 调用的程序可以依靠编译器在发出调用时自动将上下文切换至原来的状态。近日,来自微软的 Stephen Toub详细解释了该过程的工作原理。

编译器内部重写了标记为async 的方法以通过状态机将其实现出来。当程序员将某条语句标记为“await”,编译器就可以插入标记,通过这些标记,编译器能够知晓可以在何处挂起与继续方法的执行,在这个过程中是不需要用到锁的。

Toub 说到:

在等待某个尚未完成的异步操作时,编译器生成的代码能够确保与该方法相关的所有状态(比如说局部变量等)都会被打包并保存到堆上。接下来,函数返回到调用者,这样其运行的线程就可以做其他事情了。当稍后等待的异步操作完成时,方法的执行又会使用之前保存的状态继续下去。

Toub 又继续介绍了一些场景,程序员会看到比“await”所提供的更为强大的控制。在这种情况下就需要通过“AsTask”方法来为进度报告提供支持或是支持多点继续。

查看英文原文: Going Beyond async and await On WinRT

2012-05-21 10:382084
用户头像

发布了 88 篇内容, 共 273.3 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

YashanDB数据库事务日志管理及优化技巧

数据库砖家

YashanDB数据库在大数据处理中的重要性与应用

数据库砖家

鸿蒙5开发宝藏案例分享---点击响应时延分析

莓创技术

鸿蒙5开发宝藏案例分享---分析帧率问题

莓创技术

YashanDB数据库与数据科学的应用实例分析

数据库砖家

2025年能源管理系统“性价比之王”大揭秘

开源能源管理系统

YashanDB数据库事务隔离级别及实际应用方案

数据库砖家

YashanDB数据库在金融行业的成功应用分享

数据库砖家

YashanDB数据库在金融行业的实际应用探讨

数据库砖家

鸿蒙5开发宝藏案例分享---性能检测工具揭秘

莓创技术

《HarmonyOSNext 应用/元服务上架全攻略:从签名到过审的保姆级指南,让你一次跑通不踩坑!》

Turing_010

鸿蒙Next仓颉语言开发实战教程:聊天页面

幽蓝计划

YashanDB数据库事务处理与数据一致性保障

数据库砖家

鸿蒙5开发宝藏案例分享---性能分析简介

莓创技术

鸿蒙5开发宝藏案例分享---点击完成时延分析

莓创技术

鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析

莓创技术

YashanDB数据库优化查询性能的策略解析

数据库砖家

YashanDB数据库在电商网站中的应用实例与效果分析

数据库砖家

《HarmonyOSNext开发革命:一套代码征服全设备生态!》

Turing_010

YashanDB数据库业务连续性保障策略全面解析

数据库砖家

YashanDB数据库与机器学习的结合前景展望

数据库砖家

YashanDB数据库与智能分析工具的整合

数据库砖家

YashanDB数据库云上部署最佳实践与技术要点

数据库砖家

YashanDB数据库在电子商务中的应用优势

数据库砖家

YashanDB数据库在民生工程中的应用实例

数据库砖家

MyEMS开源能源管理系统4G网关

开源能源管理系统

开源 能源管理

YashanDB数据库事务管理详解,保证数据一致性

数据库砖家

YashanDB数据库事务恢复及错误处理流程

数据库砖家

YashanDB数据库与第三方服务的整合实践

数据库砖家

YashanDB数据库在金融行业的数据处理应用探讨

数据库砖家

MyEMS开源能源管理系统ModbusTCP协议配置说明

开源能源管理系统

开源 能源管理

WinRT:超越async与await_C#_Jeff Martin_InfoQ精选文章