写点什么

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:342116

评论

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

传统产业数字化转型的思考与建议

CECBC

经济转型 企业经济

教师节特别活动:第四范式多项自研技术及其应用实践分享

天枢数智运营

人工智能 推荐系统 第四范式 个性化推荐

CSS常用样式——绘制单(双)箭头的多种方法(2)

程序员学院

CSS html 程序员

合约跟单app,永续合约交易所带单交易软件

边缘计算,如何啃下集群管理这块硬骨头?

BoCloud博云

云计算 容器 边缘计算 PaaS 博云

未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

程序员小富

Java RabbitMQ mqtt

20张图,大学四年都没整明白的操作系统就这么学会了

小Q

Java 程序员 架构 操作系统

一步搞定任意圆角背景

mengxn

android xml 圆角

未来经济 数字优先 | 大数据专场

腾讯云大数据

大数据

[翻译]The Go scheduler[Go调度]

卓丁

Go scheduler Go 语言

深度解析!--阿里开源分布式事务框架Seata

攀岩飞鱼

分布式 分布式事务 微服务 分布式锁 Seate

云图说 | GPU共享型AI容器,让AI开发更普及

华为云开发者联盟

AI 容器

协同新机遇:让研发敏捷起来

人称T客

去中心化交易所搭建,虚拟币去中心化交易系统

交易所开发

MySQL高性能架构设计原则

洛神灬殇

大厂运维必备技能:PB级数据仓库性能调优

华为云开发者联盟

架构 数据

使用开源软件构建工业互联网的平台

刘旭东

工业互联网 Odoo thingsboard

XSKY ClickHouse如何实现存算分离

XSKY星辰天合

Polkadot初识,不止于跨链

QTech

polkadot 跨链

模板方法模式——看看 JDK 和 Spring 是如何优雅复用代码的

Java架构师迁哥

Redis 哨兵模式

是老郭啊

redis redis哨兵模式 redis哨兵 redis哨兵集群

新基建夯实粤港澳大湾区高质量发展基础

CECBC

区块链 人工智能 大数据

The Go Blog-Article index

卓丁

【万字长文】探讨可信构架之道

华为云开发者联盟

架构 服务端

呕心沥血,整理200+最新面试题,面试之前看一下,事半功倍

小Q

Java 学习 程序员 架构 面试

indexOf原理,Java,javascript,python实现

叫练

算法

[翻译]Go Concurrency Patterns[Go 并发模式]

卓丁

Rob Pike Go Concurrency Patterns Concurrency Go 语言

Docker 容器编排利器 Docker Compose

哈喽沃德先生

Docker 容器 微服务 Docker-compose

物联网通信技术最全科普!你一定要了解的NB-IoT

华为云开发者联盟

物联网

当心这些“坑”!阿里云服务器部署前后端分离项目

麦洛

nginx 前后端分离 跨域

LeetCode题解:225. 用队列实现栈,两个队列,压入 -O(1), 弹出 -O(n),JavaScript,详细注释

Lee Chen

大前端 LeetCode

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