Tag: observable

如何基于Func 将IObservable 窗口/缓冲到块中

给出一个类: class Foo { DateTime Timestamp {get; set;} } …和一个IObservable ,保证单调增加 Timestamp s,如何根据这些Timestamp s生成一个嵌入到列表中的IObservable<IList> ? 即每个IList应该有五秒钟的事件,或者其他什么。 我知道我可以使用带有TimeSpan重载的Buffer ,但我需要花时间从事件本身,而不是挂钟。 (除非有一个聪明的方法在这里提供一个IScheduler ,它使用IObservable本身作为IScheduler的来源?) 如果我尝试使用Observable.Buffer(this IObservable source, IObservable bufferBoundaries)重载如下: IObservable foos = //…; var pub = foos.Publish(); var windows = pub.Select(x => new DateTime( x.Ticks – x.Ticks % TimeSpan.FromSeconds(5).Ticks)).DistinctUntilChanged(); pub.Buffer(windows).Subscribe(x => t.Dump())); // linqpad pub.Connect(); …然后IList实例包含导致窗口关闭的项目 ,但我真的希望这个项目进入下一个窗口/缓冲区。 例如,使用时间戳[0, 1, […]

如何将IEnumerable转换为IObservable?

我想在不使用Rx ToObservable()和ToEnumerable()方法的情况下将IEnumerable集合转换为IObservable集合。

为什么从给定订阅者抛出时从未调用OnError回调?

请观察以下unit testing: using System; using System.Reactive.Linq; using System.Threading; using System.Threading.Tasks; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTests { [TestClass] public class TestRx { public const int UNIT_TEST_TIMEOUT = 5000; private static IObservable GetObservable(int count = 100, int msWait = 10) { return Observable.Create(async (obs, cancellationToken) => { for (int i = 0; i { Thread.Sleep(msWait); return value; })); […]

Linq查询过滤列表中的id c#

我有一个结果列表列表,其中包含List里面的内容。我有另一个列表,其中只包含List。我想使用数据中的linq查询进行过滤,它应返回包含第二个技能ID的所有数据名单。 var list = this._viewModel.Data.Select(T => T.SkillsList); var filtered = item.Skills.Contains(list.Where(t=>t.ToString()).ToList(); 从第一个列表中它包含技能列表中的小数列表; item.Skills包含字段为技能和代码的列表。 item是另一个包含技能列表的对象。

如何与发布和连接共享一个observable?

我有一个可观察的数据流,我正在应用操作,分成两个独立的流,对两个流中的每一个应用更多(不同的)操作,并再次合并在一起。 我试图使用Publish and Connect分享两个订阅者之间的可观察性,但每个订阅者似乎都在使用单独的流。 也就是说,在下面的示例中,我看到两个订阅者为流中的每个项目打印一次“执行昂贵的操作”。 (想象一下,昂贵的操作是在所有订阅者之间只发生一次的事情,因此我试图重用流。)我使用Publish and Connect尝试与两个订阅者共享合并的observable,但它似乎有错误的效果。 问题示例: var foregroundScheduler = new NewThreadScheduler(ts => new Thread(ts) { IsBackground = false }); var timer = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(10), foregroundScheduler); var expensive = timer.Select(i => { // Converting to strings is an expensive operation Console.WriteLine(“Doing an expensive operation”); return string.Format(“#{0}”, i); }); var a = expensive.Where(s => […]

如何获得N hot Observable 实例的“最后”项的总和?

编辑:2013年9月15日 – 我正在描述我的情景进一步分解为帮助每个人更好地了解我的情况的步骤。 添加了整个应用程序的源代码以供下载。 如果要跳转到原始问题,请向下滚动到最后一个标题。 请让我知道这些问题。 谢谢 摘要 阿拉斯加州首府朱诺有一个AST(阿拉斯加州警官)总部大楼,他们希望在这个大屏幕上显示一个自动显示和更新的单个号码。 该号码称为(犯罪商数指数)或CQI CQI基本上是一个计算出的数字,用于显示当前的国家犯罪情况…… 如何计算? 运行屏幕的程序是一个.NET WPF应用程序,它通过Hot IObservable流不断接收CrimeReport对象。 每个城市计算CQI,然后采用所有城市的Sum(),称为国家CQI以下是计算国家CQI的步骤 第1步 – 接收犯罪数据 每次报告犯罪时,CrimeReport都会发送到.NET应用程序。 它具有以下组件 犯罪日期时间 市 – 市/县管辖 SeverityLevel – 严肃/非严重 EstimatedSolveTime – AST确定解决犯罪所需的估计天数。 所以在这一步中,我们订阅了IObservable并创建了MainViewModel的实例 IObservable reportSource = mainSource.Publish(); MainVM = new MainViewModel(reportSource); reportSource.Connect(); 第2步 – 逐个城市,每个城市做数学 当您收到报告时,请按城市分组 var cities = reportSource.GroupBy(k => k.City) .Select(g => new CityDto(g.Key, […]