新的 C# 异步功能是否在编译器中严格实现

2023-11-22

作为一名对探索“事物如何工作”感兴趣的 C# 程序员,我有兴趣更多地了解创造新事物的过程async特色工作。

我关注了 Eric Lippert 关于异步的优秀文章系列:异步博客文章

我不记得在任何地方看到过任何关于此功能的实现(在高级别上)的参考,除了“编译器正在为我们完成大部分工作”这一事实。

那么这个功能严格来说是编译器功能吗?编译器是否以某种方式重写代码,仅此而已?或者是否有其他东西(例如运行时支持)可以实现这一点?


不,这不对entirely在编译器中。它依赖于一些新的接口,例如INotifyCompletion和一些框架执行支持如AsyncTaskMethodBuilder。但我不认为需要进行任何 CLR 更改。

编译器做了很多工作,构建一个状态机 - 它只是引用状态机中的其中一些类型。哦,还有很多Task主要出于性能原因对相关类型进行了重大修改。

我有一个系列博客文章最初是针对 CTP 编写的,但是only使用普通的 .NET 4 和一些我自己创建的类。它们不会对生产实施产生影响(因为随着时间的推移,事情会发生一些变化),但它们会让您对幕后发生的事情有一个总体印象。

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

新的 C# 异步功能是否在编译器中严格实现 的相关文章

  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器

随机推荐

  • 错误:View android.widget.ListView 不是滑动抽屉

    我在用NavigationDrawer在我的 Android 应用程序中 我也制作了自己的自定义布局 XML 文件及其适配器 但是当我运行我的程序时 我的应用程序崩溃并显示以下日志 我无法追踪其原因 有什么建议吗 活动主文件
  • 将序列链接到 hsqldb 中的标识

    在PostgreSql中 我们可以定义一个序列并将其用作表的主键 在 HsqlDB 中 我们仍然可以创建一个不链接到任何用户定义序列的自动增量标识列 是否可以使用用户定义的序列作为HsqlDB中自增标识列的生成器 PostgreSql 中的
  • Unity3D-获取组件

    在Unity3D中获取组件的最简单方法是什么C My case GameObject gamemaster C script MainGameLogic cs attached to gamemaster A boolean backfac
  • 编译器在运行前将 Java 字节码转换为与平台无关的 C 代码?

    我正在寻找一个编译器 可以在运行之前将 Java 字节码转换为独立于平台的 C 代码 提前编译 然后 我应该能够使用标准 C 编译器将 C 代码编译为目标平台的可执行文件 据我了解 这种方法仅适用于某些不经常修改的 Java 应用程序 那么
  • 如何在现代 C++ 中将 float 转换为 int

    尽管看起来很奇怪 但我找不到如何干净地转换float to an int 这种技术 int int value int float value 0 5 触发一个 warning use of old style cast in gcc 那么
  • Java中对象的内存消耗是多少?

    一个具有 100 个属性的对象所消耗的内存空间与 100 个对象 每个对象各有一个属性 所消耗的内存空间相同吗 为一个对象分配了多少内存 添加属性时使用了多少额外空间 Mindprod指出这不是一个容易回答的问题 JVM 可以自由地以任何内
  • 日期在 mysql 中插入为 0000-00-00 00:00:00

    My date输出在 foreach 循环中 2011年9月25日 2011年2月13日 2010年9月15日 2010年6月11日 2010年4月13日 2010年4月13日 2010年4月13日 09 09 24 02 19 09 12
  • 如何在 azure linux 托管的 Web 应用程序上运行 cronjobs?

    在 azure 上的 Linux Web 应用程序上找不到 Crontab 命令 我正在尝试为 Laravel 应用程序安排 cronjob 我正在尝试为我的 laravel web 应用程序运行一个 cronjob 在线解决方案建议我为此
  • R中如何合并两行?

    我想根据行名组合 求和两行 以在 R 中生成一行 最好的路线可能是创建一个新行并将两行求和在一起 示例 df A 1 3 4 6 B 3 2 7 9 C 6 8 1 2 D 3 2 8 9 其中 A B C D 是行名 我想将两行 A 和
  • Java XML:ClassCastException DeferredTextImpl

    这是我的代码 get the factory DocumentBuilderFactory dbf DocumentBuilderFactory newInstance try Using factory get an instance o
  • 从 MatPlotLib 画布获取二进制图像数据?

    我试图从 matplotlib 画布中获取二进制数据 以便将其附加到电子邮件中 但我发现这样做的唯一方法是说 filename image png canvas print figure filename with open filenam
  • 如何将该程序从 conio 移植到curses?

    我在 Windows 上编写了这个简单的程序 由于Windows有conio 所以它工作得很好 include
  • 将 Equinox OSGi 集成到 Apache Tomcat Web 应用程序中

    是否可以将 osgi equinox 引入到现有的 java Apache Tomcat 项目中 根据我的理解 OSGI 必须在某种 容器 内运行 我将如何整合它 我也在使用Jersey用于 RESTful 资源 您可能想看看这个问题 传统
  • Nginx、PHP + FPM 自定义错误页面

    我正在尝试创建一些自定义错误页面 但似乎无法让 500 页面正常工作 我有以下配置 server listen 80 root var www devsite index index php server name devsite erro
  • 如何将 Paypal 的 HH:MM:SS DD Mmm(.) YYYY PST/PDT 转换为 C# UTC 日期时间?

    我想在 SQL Server 数据库中以这种格式记录 payment date Update 直觉在这一点上是正确的 在这里找到了解决方案 http www codeillustrator com 2010 03 converting pa
  • 如何检测QWidget的关闭按钮被按下?

    我创建一个新的QWidget对象 我想知道何时按下关闭按钮 我尝试过以下代码 pWindow new QWidget connect pWindow SIGNAL triggered this SLOT processCloseButton
  • 如何在 Tensorflow Serving 中进行批处理?

    部署 Tensorflow Serving 并运行 Inception V3 测试 工作正常 现在 想要为 Inception V3 进行批处理 例如 希望发送 10 张图像 而不是一张 进行预测 怎么做 要更新哪些文件 inception
  • hadoop map减少二次排序

    谁能解释一下 hadoop 中的二次排序是如何工作的 为什么一定要使用GroupingComparator它在 hadoop 中是如何工作的 我正在浏览下面给出的链接 并对 groupcomapator 的工作原理产生疑问 谁能解释一下分组
  • java.sql.SQLException: ORA-00928: 缺少 SELECT 关键字。使用 JDBC 将记录插入数据库时

    当我尝试将一些行插入数据库时 出现错误 所以这是代码 try String insertStmt INSERT into MY TABLE RECORD TYPE FILE TYPE DATE BATCH NO RECORD COUNT V
  • 新的 C# 异步功能是否在编译器中严格实现

    作为一名对探索 事物如何工作 感兴趣的 C 程序员 我有兴趣更多地了解创造新事物的过程async特色工作 我关注了 Eric Lippert 关于异步的优秀文章系列 异步博客文章 我不记得在任何地方看到过任何关于此功能的实现 在高级别上 的