写点什么

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

评论

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

建议收藏!Harmony应用配置文件概述(Stage模型)

HarmonyOS开发者

HarmonyOS

为 DevOps 战士准备的 Linux 命令

CODING DevOps

图形工作站和设计师电脑有什么区别?

青椒云云电脑

图形工作站

通过实例学习鸿蒙静态库的创建与使用

互联网工科生

鸿蒙 harmony C++

云桌面在学校云教室有什么应用场景?优势是什么

青椒云云电脑

云桌面 云教室

图形工作站跟电脑有什么区别?

青椒云云电脑

图形工作站

基础设施SIG月度动态:「龙蜥大讲堂」基础设施系列专题分享完美收官,容器镜像构建 2.0 版本上线

OpenAnolis小助手

开源 容器 云原生 龙蜥社区 KeenTune

中企出海,用火山引擎DataTester开启增长第一步

字节跳动数据平台

大数据 A/B 测试 企业号9月PK榜

桌面云一体机价格怎么样?

青椒云云电脑

桌面云 桌面云一体机

什么是云教室,有什么功能特性?

青椒云云电脑

云教室

代码审查真的已经过时了吗?

树上有只程序猿

敏捷开发 代码审查

算法AB实验平台进化历程和挑战

得物技术

后端 实验 企业号9月PK榜

购买国外站群服务器快速实现SEO优化效果

一只扑棱蛾子

站群服务器

华为云发布CodeArts Inspector漏洞管理服务,守护产品研发安全

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号9月PK榜

美女程序媛的求职路复盘:也算是逆袭了!

王中阳Go

golang 职业发展 求职面试 学习效率 女程序媛

做设计图可以用云电脑么?如何使用

青椒云云电脑

云电脑

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