RX.Net 第二章 hello Word

news/2024/9/24 0:20:11/

本章提供了一个简单而强大的例子,你可能在过去做过(或者将来可能会做),并以两种方式解决它:传统的事件风格和Rx风格的事件处理流。

  1. net中编写事件驱动的应用程序非常直观,但在资源清理和代码可读性方面需要注意。

  2. 要使用Rx库,需要安装Rx包。大多数情况下,您将安装系统。反应计划。

  3. 您可以在任何类型的应用程序中使用Rx WPF桌面客户端,asp.net网站或简单的控制台应用程序等。

  4. 传统的。net事件可以转换为可观察对象。

  5. Rx允许您在可观察对象之上编写查询表达式。

  6. Rx提供了许多查询操作符,例如使用Where操作符进行过滤,使用Select操作符进行转换等等。

当然,这还没有结束。这只是你旅程的开始。要在应用程序中正确使用Rx并使用所有丰富的操作符,您需要学习它们以及将它们组合在一起的技术,这就是本书的全部内容。

在下一章中,你将学习函数式的思维方式,它与。net内部的核心概念一起,使Rx得以发展

word">using System;
word">using System.Collections.Generic;
word">using System.Linq;
word">using System.Reactive.Linq;
word">using System.Text;
word">using System.Text.Json;
word">using System.Threading.Channels;
word">using System.Threading.Tasks;word">namespace ReactiveDemo;word">class StockTick
{word">public word">string Name { word">get; word">set; }word">public word">float Price { word">get; word">set; }
}word">class StockTicker
{word">public word">event EventHandler<StockTick> StockTick;word">public word">void Trigger(StockTick stockTick){StockTick?.Invoke(word">this, stockTick);}
}word">struct DrasticChange
{word">public DateTime TimeSpan { word">get; word">set; }word">public word">string Name { word">get; word">set; }word">public word">float ChangeRatio { word">get; word">set; }word">public word">float OldPrice { word">get; word">set; }word">public word">float NewPrice { word">get; word">set; }
}word">class StockReactive
{word">public word">static word">void Run(){word">var maxChangeRatio = 0.3f;word">var stockTicker = word">new StockTicker();//获取事件源word">var ticks = Observable.FromEventPattern<EventHandler<StockTick>, StockTick>(h => stockTicker.StockTick += h,h => stockTicker.StockTick -= h).Select(t => t.EventArgs);//模拟筛选股票价格波动,(有个漏洞,若果tickPair[0].Price = 0 怎么办)word">var ticksGroups = word">from tick word">in ticksword">group tick word">by tick.Name word">into companyword">from tickPair word">in company.Buffer(2, 1)word">let changeRatio = DiffPercentage(tickPair[1].Price, tickPair[0].Price)word">where changeRatio > maxChangeRatioword">select word">new DrasticChange{TimeSpan = DateTime.Now,Name = company.Key,ChangeRatio = changeRatio,OldPrice = tickPair[0].Price,NewPrice = tickPair[1].Price};word">var subescribeer = ticksGroups.Subscribe(t => Console.WriteLine($"收到信息:{JsonSerializer.Serialize(t)}"));//制造数据word">for (word">int i = 0; i < 100; i++){word">var stockTick = word">new StockTick(){Name = $"{(i % 3)}Name",Price = i * DateTime.Now.Second,};stockTicker.Trigger(stockTick);}subescribeer.Dispose();}word">static word">float DiffPercentage(word">float f1, word">float f2){word">if (f1 == 0){f1 = 0.0000000000001f;}word">return Math.Abs((f1 - f2) / f1);}
}

http://www.ppmy.cn/news/1425428.html

相关文章

CERLAB无人机自主框架: 2-动态目标检测与跟踪

前言&#xff1a;更多更新文章详见我的个人博客主页【MGodmonkeyの世界】 描述&#xff1a;欢迎来到CERLAB无人机自主框架&#xff0c;这是一个用于自主无人飞行器 (UAV) 的多功能模块化框架。该框架包括不同的组件 (模拟器&#xff0c;感知&#xff0c;映射&#xff0c;规划和…

微服务使用SockJs+Stomp实现Websocket 前后端实例 | Vuex形式断开重连、跨域等等问题踩坑(一)

大家好&#xff0c;我是程序员大猩猩。 之前几篇文章&#xff0c;我们讲了Spring Cloud Gateway的轻量级实现&#xff0c;Nginx的配置概念与实现&#xff0c;如以下往期文章。 轻量级的Spring Cloud Gateway实践&#xff0c;实现api和websocket转发轻松实现Nginx的HTTP与WebS…

C#自定义窗体更换皮肤的方法:创建特殊窗体

目录 1.窗体更换皮肤 2.实例 &#xff08;1&#xff09;图片资源管理器Resources.Designer.cs设计 &#xff08;2&#xff09;Form1.Designer.cs设计 &#xff08;3&#xff09;Form1.cs设计 &#xff08;4&#xff09; 生成效果 &#xff08;5&#xff09;一个遗憾 1.窗…

多模态AnyGPT——整合图像、语音和文本多模态大规模语言模型算法原理与实践

概述 大规模语言模型在理解和生成人类语言方面具有非凡的能力&#xff0c;但迄今为止&#xff0c;它们的能力主要局限于文本处理。然而&#xff0c;现实世界是一个多模式的环境&#xff0c;信息通过视觉、听觉和触觉等多种感官进行交换。融入这种多样性是开发下一代系统的主要…

spring boot后端开发基础

spring boot后端开发基础 Spring Boot一、开发步骤二、Web分析三、跨域问题四、HTTP协议五、Web服务器六、响应前端请求七、springboot常用注解创建一个简单的RESTful API服务层和数据访问层配置类和Bean定义响应体和路径变量 Spring Boot 一、开发步骤 创建项目 添加依赖 项…

MySQL 按时间进行表分区

文章目录 创建按月份分区的表开启数据库事件临时配置&#xff08;服务重启会失效&#xff09;修改my.cnf文件&#xff08;推荐&#xff09; 定时事件自动建分区查询表分区信息 创建按月份分区的表 create table if not exists table_name (id bigint auto_increment …

centos 下如何锁定docker版本

可能因为某些原因无意间执行了yum update或者apt-get -y upgrade;导致Docker版本升级&#xff0c;这会引起你开发的项目因为环境不同而面临不能执行的风险&#xff0c;为了避免此类问题发生&#xff0c;建议在安装好Docker后对Docker软件进行锁定&#xff0c;防止Docker意外更新…

鸢尾花数据集的KNN探索与乳腺癌决策树洞察

鸢尾花数据集的KNN探索与乳腺癌决策树洞察 今天博主做了这个KNN和决策树的实验。 一.数据集介绍 介绍一下数据集&#xff1a; 威斯康星州乳腺癌数据集&#xff1a; 威斯康星州乳腺癌数据集&#xff08;Wisconsin Breast Cancer Dataset&#xff09;是一个经典的机器学习数…