NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

Part 2:NetOps与传统网络运营的区别

Geek_d82186

Part 4:NetOps 策略如何影响企业网络团队?

Geek_d82186

基于OpenIM 实现聊天机器人功能

Geek_1ef48b

极狐GitLab 16.8 如期而至,快来看看有哪些功能更新!

极狐GitLab

如何在JavaScript中实现主题切换

南城FE

CSS JavaScript 前端 主题切换

# OpenIM (Open-Source Instant Messaging) Mac Deployment Guide

Geek_1ef48b

Claris FileMaker Pro for mac(数据库软件)v20.3.1.31激活版

影影绰绰一往直前

Part 3:为什么 NetOps 是通往 AIOps 的桥梁

Geek_d82186

Wireshark的捕获接口设置

小齐写代码

深入了解低代码开发:多角度分类

天津汇柏科技有限公司

低代码 低代码开发 低代码开发平台 定制软件开发 软件开发定制

听GPT 讲Rust源代码--compiler(47)

fliter

Nginx安装三方插件ngx_req_status模块教程

百度搜索:蓝易云

云计算 Linux 运维 云服务器 ngx_req_status

Part 5:NetOps团队的 SecOps和网络安全基础知识

Geek_d82186

听GPT 讲Rust源代码--compiler(48)

fliter

面向对象的思考

蔡农曰

架构 开发 软件设计 #程序员

Python笔记四之协程

Hunter熊

Python 协程

镜像仓库Habor的安装、高可用、https加密教程

百度搜索:蓝易云

Docker Linux 运维 https habor

给你一颗“定心丸”——记一次由线上事故引发的Log4j2日志异步打印优化分析

京东科技开发者

听GPT 讲Rust源代码--compiler(46)

fliter

从上海到阿根廷的网络走线方式和耗时

fliter

【完整版教程】查看APP崩溃日志

雪奈椰子

【分布式技术专题】「探索高性能远程通信」基于Netty的分布式通信框架实现(附通信协议和代码)(上)

洛神灬殇

分布式 Netty RPC 网络通讯 2024年第二十五篇文章

京东商品详情数据接口python

tbapi

京东 京东商品详情数据接口 京东API接口

跨境通讯

ctsxiyou

通信 通讯

[杂谈]IDE-idea-可执行JAR项目创建

alexgaoyh

Java IDEA 打包 可执行JAR

某SAAS云平台系统单点登录案例基本要求分析

极客罗杰

Tonka Finance 测试网活动,开启新铭文时代财富之门

股市老人

产品价值 vs Bug数量

Bruce Talk

敏捷 敏捷开发 Agile Product Owner

京东零售实践干货|简单一招竟把nginx服务器性能提升50倍

京东零售技术

nginx 后端

四步搞定国赛!快速入门大小模型融合的AI产品开发

飞桨PaddlePaddle

百度 产品开发 大模型 飞桨国赛 飞桨星河社区

Part 1:什么是网络运营?你需要知道的一切

Geek_d82186

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