HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

评论

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

低代码开发赋能教育数字化及典型场景

不在线第一只蜗牛

低代码 教育新创

低代码用得好,开发真的很顺手

伤感汤姆布利柏

SD-WAN实现企业出海网络加速

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

天谋科技与腾讯云完成兼容性互认证

Apache IoTDB

计算机英文教材太难啃?Higress 和通义千问帮你!

阿里巴巴云原生

阿里云 云原生 Higress

PingCAP 与沙利文联合发布《中国企业全球化运营白皮书》

先锋IT

从仿真到生成式仿真,大模型助力工业智能化发展

Altair RapidMiner

#人工智能 仿真技术 制造业数字化 #大模型

案例研究|为什么 CDG 会选择从 DataDog 迁移至观测云?

观测云

可观测性

被黑客入侵的 DMM 比特币为比特币购买获得 3.2 亿美元

区块链开发团队DappNetWork

运营海外社媒平台的最佳工具:云手机

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 海外云手机推荐

小游戏应该如何创建一个元服务项目

FN0

鸿蒙卡片 元服务

iLogtail 2.0 重大升级,端上支持 SPL

阿里巴巴云原生

阿里云 云原生 日志服务 sls

6 大亮点!全新 Anolis OS 23.1 GA 版正式发布,满足多样化平台支持

OpenAnolis小助手

操作系统 国产操作系统 龙蜥操作系统 Anolis OS Anolis OS 23.1

报名倒计时 2 天!龙蜥社区系统安全 Meetup 演讲亮点一览

OpenAnolis小助手

操作系统 系统安全 浪潮信息 龙蜥meetup

开发体育赛事直播平台源码:具备全面的体育数据资料库

软件开发-梦幻运营部

业务转型,你的团队该如何应对?

凌晞

团队管理 数字化业务转型IT路线图

低代码开发:企业OA低成本数字化转型的新引擎

EquatorCoco

低代码 OA

深入解读Prometheus Adapter:云原生监控的核心组件

快乐非自愿限量之名

微服务 云原生 容器化

广东人仁康一项技术通过国家科技成果评价达到国际先进水平平

Geek_2d6073

「C++」深度分析C++中i++与++i的区别 _

不在线第一只蜗牛

c++ 编程 开发语言

Wi-Fi 6E vs. Wi-Fi 7: Which is the Best Fit for Your Infrastructure?

wallyslilly

IPQ8072 ipq9574

Altair RapidMiner,将数据科学、深度学习等多种功能同时集成的一站式数据分析平台

Altair RapidMiner

机器学习 大模型 #人工智能 #数据分析

【YashanDB知识库】outline固化执行计划

YashanDB

yashandb 崖山数据库

Mint Blockchain 成立 Mint Eco Fund 发展基金,并启动 Season1 开发者活动 NFT Summer!

NFT Research

NFT Layer 2

SMC-R 透明加速 TCP 技术,在 Redis 场景下的应用实践 | 干货推荐

OpenAnolis小助手

操作系统 龙蜥社区 SMC-R 浪潮信息 TCP 技术

数据驱动的未来:数据融合与平台化应用的探索

快乐非自愿限量之名

低代码 数据驱动 平台化

一台桌面工作站的智慧之光,照见宁畅“全局智算”版图

脑极体

AI

Netty FastThreadLocal实践

FunTester

龙蜥社区 5 月度运营大事件回顾

OpenAnolis小助手

开源 操作系统 龙蜥社区 月报

ApsaraMQ Copilot for RocketMQ:消息数据集成链路的健康管家

阿里巴巴云原生

阿里云 RocketMQ 云原生

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