写点什么

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

评论

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

软件测试 | 数据类型的转换

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

测试

Windows10 下 Neo4j1.5.8 安装教程

北桥苏

Python neo4j 图数据库 py2neo 知识问答系统

陈毅威“掌舵”SUSE 中国 3.0,谋势数字江湖

Rancher

全面解析JMeter环境变量配置步骤

Liam

程序员 软件测试 测试 Jmeter 测试工具

.net core基于HttpClient实现的网络请求库

互联网工科生

.net core http client

从零开始学极狐GitLab|01 环境搭建

极狐GitLab

Linux DevOps gitlab DevSecOps 环境搭建

与用户“同频”,海尔空调带来行业第三次科技革命

脑极体

绿色 空调

使用可视化低代码工具提高开发效率

互联网工科生

低代码 可视化开发 JNPF

NFTScan 与 Purelist 达成战略合作伙伴,双方在 NFT 一级发售方面展开合作

NFT Research

NFT\ 市场

异步 I/O 探秘 —— 为什么说 Go 为我们提供了同步的网络编程接口 ?

蓬蒿

golang 异步IO asynchronous i/o netpoller

阿里云中“间“力量!RocketMQ

指剑

阿里云 RocketMQ 函数计算FC 事件总线Eventbridge

软件测试 | Java中的关键字

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

测试

软件测试 | 在Windows平台安装MySQL

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

测试

MES/MOM国内市场现状趋势与新生态模式参考

华为云开发者联盟

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

一步一图带你构建 Linux 页表体系 —— 详解虚拟内存如何与物理内存进行映射

bin的技术小屋

内存管理 Linux Kenel Linux内核 页表 Linux内核源码

语音标注平台是推动人工智能发展的关键工具之一

数据堂

软件测试 | 在Linux平台下安装MySQL

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

测试

打翻夏日调色盘,华为与你多巴胺一“夏”

最新动态

软件测试 | Windows平台下配置MySQL

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

测试

语音标注平台是构建智能语音技术的重要基石

数据堂

定了!12支队伍进入HarmonyOS极客马拉松2023决赛

HarmonyOS开发者

HarmonyOS

DTT直播回顾:一文带你全面了解openGemini

华为云开源

时序数据库 开源数据库 openGemini

云智慧「智能运维6.0产品发布会」与您相约7.24运维日

云智慧AIOps社区

智能运维 #运维 智能运维AIOps 运维智能化

软件测试 | Java程序的注释

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

测试

语音数据标注平台让语音识别技术更精准

数据堂

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