QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Reactive Extensions for .NET 4.5

  • 2011-11-17
  • 本文字数:785 字

    阅读完需:约 3 分钟

.NET 4.5 带来了新的功能,我们可以趁这个机会再来探讨一下独立的 Reactive Extensions 库。 Bart De Smet 谈到了 Rx 实验分支里的情况,也提到了 JavaScript 和 C++ 的 Rx。

首先是 Rx 支持 ExceptionDispatchInfo 。在之前版本的.NET 里,捕捉异常和抛出异常的线程一般是相同的。如果库需要把它们挪到另一个线程,会通过封送回调的字段传递它们,然后通过一个泛型异常包装它们。新的异常不能隐藏下面发生的真正错误。

ExceptionDispatchInfo.Capture 方法用于捕获异常,然后通过 ExceptionDispatchInfo.Throw 在正确的线程里重新抛出。堆栈跟踪同时包括新的和原来位置的帧,并通过“End of stack trace from previous location where exception was thrown”文字分割两者。

Reactive Extensions 创建的时候无法使用 Task,因为那时 Task Parallel Library 还不能用,即使现在,许多平台仍然不支持 TPL,比如说,Silverlight。作为替代方案,Rx 库是在.NET 原来的异步模式上构建的。因此 Observable 可以通过 Observable.FromAsyncPattern 方法创建。

由于 C# 5 和 VB 11 支持的 async/await 是在任务之上构建的,各个平台现在应该完全支持 Task Parallel Library 了。这使得 Rx 项目最终可以直接从 Task构建 Observable。

除了任务和 Observable 之间的转换,Reactive Extensions 还将直接支持 await 关键字。这会返回 IObservable 序列的最后一项。如果想要序列里的全部项,可以通过 ToList 方法把 IObservable转成 IObservable<List>。

另一个改变是替换了 Average 和 ForEach 等阻塞操作。举个例子,新的 ForEachAsync 方法将会返回一个可以等待的 Task。

JavaScript 版的 RxJS 将会有一个新的版本,基于 Rx 的当前产品版本。目前还没有时间表,但他们表示已经进入完善阶段。Reactive Extensions 组还有一个本地开发者负责 C++ 版,暂命名为 RxC。

查看英文原文: Reactive Extensions for .NET 4.5

2011-11-17 07:342084

评论

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

KubeBlocks v0.8.0 发布!Component API 让数据库引擎组装更简单!

小猿姐

数据库 云计算 Kubernetes

每日一题:LeetCode-179. 最大数

Geek_4z9ami

Go 面试 LeetCode 排序 排序算法

大白话70个你必须知道的AI重要概念(一)

FN0

人工智能 AI AIGC

第七在线荣获百灵奖 Buylink Awards 2023零售圈年度卓越服务商品牌

第七在线

Ronin Network 宣布与链上数据解决方案 Footprint Analytics 合作

Footprint Analytics

区块链 以太坊 加密货币

荣耀开发者大会 2023·一张图读懂应用分发分论坛

荣耀开发者服务平台

开发者大会 honor 分发与计算 应用市场

荣耀开发者大会 2023·一张图读懂服务分发分论坛

荣耀开发者服务平台

行业趋势 开发者大会 智慧生活 honor 分发

大白话70个你必须知道的AI重要概念(二)

FN0

人工智能 AI AIGC

如何利用docker部署springboot 项目

想要飞的猪

Excel数据转换为一对多的工具类

alexgaoyh

Java Excel 一对多解析 exsyexcel 数据解析

程序员一定要知道的前端常用设计模式

不在线第一只蜗牛

前端 前端开发

「繁花」绽放,「她力量」引领AI新革命

Geek_2d6073

揭秘Spring事务失效场景分析与解决方案

EquatorCoco

数据库 spring 框架

ThreadLocal真的会造成内存泄漏吗?

不在线第一只蜗牛

内存泄露 ThreadLocal

大白话70个你必须知道的AI重要概念(三)

FN0

人工智能 AI AIGC

软件测试/测试开发/测试管理 | Page Object模式:为什么它是Web自动化测试的必备工具

测吧(北京)科技有限公司

测试

实现高效人力资源管理的完美搭档,聚道云与薪人薪事合作,助力企业数字化转型

聚道云软件连接器

案例分享

全方位提升用户数字化体验的解决方案

观测云

用户体验

官宣!OpenTiny 前端 Web 应用开发挑战赛开赛啦~30万奖金等你拿!

OpenTiny社区

开源 前端 低代码 组件库

阿里巴巴重磅推出:Java进阶必备宝典,从理论到实战,一册在手

Reische

MySQL tomcat Netty 「Java 25周年」 JVM’

掌握这本算法宝典,轻松拿下字节跳动offer

Reische

算法 Java' 程序员‘ 算法、

荣耀开发者大会2023 · 一张图读懂智慧人机交互分论坛

荣耀开发者服务平台

AI 交互 开发者大会 人机协作 honor

软件测试开发丨PageObject模式:为什么是Web自动化测试必备工具

测试人

软件测试

2024杭州国际智慧城市,人工智能,安防展览会(杭州智博会)

AIOTE智博会

智博会 物联网展 人工智能展 智慧城市展 杭州智博会

腾讯云ES AI增强搜索:十分钟快速入门自然语言处理(NLP)与向量检索

腾讯云大数据

ES

聚合收益协议 InsFi :打开铭文赛道全新叙事的旋转门

股市老人

Reactive Extensions for .NET 4.5_.NET_Jonathan Allen_InfoQ精选文章