Microsoft.Bcl.Async 如何工作?

2023-12-30

Microsoft.Bcl.Async使开发人员能够使用async/await没有 .NET Framework 4.5 的关键字,它们应该以使用它们为目标。

这太棒了,这要归功于 Microsoft CLR 和语言团队的人们的辛勤工作。

现在我很好奇这是如何运作的。

async/await要求编译器做一些繁重的工作,将代码转换为可以执行等待操作的代码。

编译器起初在 .NET Framework 4.0 下抛出编译错误,即使它清楚地知道是什么async/await平均值(Visual Studio 2012/2013。)

那么这个库如何告诉编译器不要抛出与异步操作相关的特定编译错误,并像在 .NET Framework 4.5 下一样进行一些代码提升?


async/await无非是 C# 5.0 编译器转换。没有async/await at IL level.

一个简单的例子是using() { }语句,这也是编译器转换。它只是转换using声明给try/finally堵塞。然而,存在依赖于IDisposable.NET 1.1 中定义的接口。

同样,async/await转换取决于某些类型,例如IAsyncStateMachine.NET 4.5 中定义的接口。这Microsoft.Bcl.Async将这些类型定义获取到 .NET 4.0。

EDIT

Microsoft.Bcl.Async 程序集如何使编译器识别新关键字(async/await)?

不,不是的。 C# 5.0 编译器已经了解关键字以及如何处理它们。但是,由于项目面向 .NET 4.0,因此无法找到所需的类型。这Microsoft.Bcl.Async包引入了这些类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Microsoft.Bcl.Async 如何工作? 的相关文章

随机推荐

  • 以引用对象为标准的 mongoid 作用域

    我在 Rails 3 中的 Mongoid 模型有以下范围 class Expert include Mongoid Document referenced in category scope currently available lam
  • 在不违反 REST 的情况下处理长查询

    我们有一个 REST api 并且我们在坚持 REST 精神方面做得非常好 然而 我们有一个重要的消费者 他们请求一种方法来协调他们的数据存储 流程如下 消费者进行 GET 调用来检索在某个日期范围内创建的所有库存对象 假设这会返回 100
  • Antlr 数组帮助

    嘿 我开始在 java 中使用 Antlr 我想知道如何将一些值直接存储到二维数组中并返回该数组 我根本找不到任何关于此的教程 感谢所有帮助 假设您想要解析一个包含由空格分隔的数字的平面文本文件 您想将其解析为二维数组int其中每一行都是数
  • 为什么动态构造对于 php 编译器 (PHP) 来说很困难?

    我正在读保罗 比格的书http blog paulbiggar com archive a rant about php compilers in general and hiphop in pspecial http blog paulb
  • 无法使用集成在 P4 中创建新分支

    我在 P4 有一个分行 depot MyDemoInfo trunk Server My Service 在 My Service 下 存在我的整个源代码 现在 当我尝试从上面的主干分支创建一个新分支时 它给了我错误 我正在尝试创建一个新的
  • ggplot geom_tile 与面的间距

    我正在尝试制作一个按 x 轴上的两个离散变量排序的多面 ggplot 问题是我想让垂直相邻的条目全部接触 目前 行之间存在空间 具体取决于顶部图与底部图中因子的水平 抱歉 这个可重现的示例有点冗长 npats 20 simsympt c i
  • 如何将反应式rhandsontable重置为默认值?

    我正在构建一个应用程序 其中 2 2 表包含一些用于进一步计算的值 这些值可以由用户更新 并且用户将能够恢复到原始值 我试图通过一个操作按钮来实现它 该按钮会将表重置为其原始值 但表不会更新 这是一个简化的示例 rm list ls lib
  • HTML 电子邮件中的内联边框样式

    我正在处理响应式 HTML 电子邮件 并且仅在 IE 中的 Gmail 中遇到渲染问题 必须如此 它在其他 27 个客户端变体中运行良好 我们需要支持 我在这里设置了一个小提琴 http jsfiddle net 39gzj http js
  • 搭载 iOS 5 和 iOS 6 的 Facebook

    我即将发布一个应用程序 它必须同时支持 iOS 5 和 iOS 6 但是对于新的 Facebook SDK 3 1 我不太确定如何集成 Facebook 功能以与两个 iOS 版本一起使用 让登录和墙贴操作在 iOS5 和 iOS6 版本中
  • 如果连接了硬件键盘,则隐藏 inputAccessoryView

    类似于这个问题 iPad 检测外接键盘 https stackoverflow com questions 5019471 ipad detecting external keyboard 我正在开发一个 iPad 应用程序 该应用程序使用
  • list.item(0) 与 list[0]

    document getElementsByTagName a item 0 and document getElementsByTagName a 0 将返回相同的结果 前者比后者快吗 自制性能测试 http jsfiddle net 4
  • 在 Ubuntu 16.04 Xenial 和 apache 上安装 php 5.3 或 5.4

    我想在 Ubuntu 16 04 Xenial 和 Apache 上安装 php 5 3 或 5 4 教程指导我使用 PPA 但他们没有帮助我满足我的需要 我知道 PHP 5 3 和 4 已过时 但我需要这个项目 这可能吗 如果是 那么请教
  • AVURLAsset 未加载(.mov 文件)

    我正在尝试加载一个名为 output mov 在 iPhone 上创建 的文件作为AVURLAsset使用以下代码 NSURL outputURL NSURL fileURLWithPath NSString stringWithForma
  • 如何通过单击div外部的按钮来更改div的内容?

    感谢您花时间阅读这篇文章 希望问同样问题的人也能得到答案 我正在开发一个分为 8 个大 div 的单页面网站 这样当您单击菜单栏时 它会将您带到其中一个 div 或 页面 在我网站的介绍部分的一个 div 或页面 上 我试图引入这种效果 h
  • 获取 GDK_BACKEND 与 debian 中的可用显示错误不匹配

    实际上我正在尝试通过 selenium 在远程 debian 服务器中运行无头浏览器 我在服务器中安装了 firefox 46 0 1 我使用的是 selenium 2 53 1 版本 每当我尝试运行给定的测试时 我都会收到以下错误 org
  • 如何在R中检查字符串是否包含罗马数字?

    我的数据集 ad 中有一个住宅地址列 我想检查没有数字 包括罗马数字 的地址 我在用着 ad check lt grepl digit ad address 标记出不存在数字的地址 如何对包含罗马数字的地址执行相同的操作 例如 ABC Ci
  • 找出给定颜色的互补色/相反色

    我正在尝试使用 Python 找出给定颜色的补色 这是我的代码 代码返回错误消息 告诉 AttributeError list 对象没有属性 join 我需要提示 此外 可能有一个更强大的代码来计算相反 互补的颜色 这是我基本上正在寻找的
  • “contentsOfFile”返回 nil,可能的原因

    当获取 csv 文件的内容时 以下内容返回 nil 但是 将 csv 表减少到 10 行将正常工作 输出 csv 文件的内容 原始 csv 约有 400 000 个字符 排列在 500 行和 11 列中 是什么导致原始 csv 返回 nil
  • 跨多个 js 文件拥有多个 $(document).ready 函数的含义[重复]

    这个问题在这里已经有答案了 可能的重复 JQuery 多个 document ready https stackoverflow com questions 5263385 jquery multiple document ready 拥有
  • Microsoft.Bcl.Async 如何工作?

    Microsoft Bcl Async使开发人员能够使用async await没有 NET Framework 4 5 的关键字 它们应该以使用它们为目标 这太棒了 这要归功于 Microsoft CLR 和语言团队的人们的辛勤工作 现在我