C# 行为主体和组合最奇怪的行为
给定以下代码C# 行为主体和组合最奇怪的行为,c#,system.reactive,C#,System.reactive,给定以下代码 EventLoopScheduler scheduler = new EventLoopScheduler(ts => new Thread(ts)); BehaviorSubject<int> subject = new BehaviorSubject<int>(0); subject .ObserveOn(scheduler) .CombineLatest(Observable.Interval(TimeSpan.FromSec
EventLoopScheduler scheduler = new EventLoopScheduler(ts => new Thread(ts));
BehaviorSubject<int> subject = new BehaviorSubject<int>(0);
subject
.ObserveOn(scheduler)
.CombineLatest(Observable.Interval(TimeSpan.FromSeconds(1), scheduler), (x, y) => x)
.Subscribe(x => Debug.WriteLine(x));
subject.OnNext(1);
而不是:
0
1
1
1
1
1
...
首先,您的输出看起来非常奇怪。我想他们两个都是。我想输出应该是:
1
1
1
1
1
没有0
。这是因为第一个间隔值将在1秒内产生-肯定是在调用subject.OnNext(1)之后代码>
另一个问题是行为主题是英国版的吗如果您有自己的行为主题
实现,请用它扩展您的问题。首先,您的输出看起来非常奇怪。我想他们两个都是。我想输出应该是:
1
1
1
1
1
没有0
。这是因为第一个间隔值将在1秒内产生-肯定是在调用subject.OnNext(1)之后代码>
另一个问题是行为主题是英国版的吗如果您有自己的行为主题
实现,请用它扩展您的问题。您的意思是什么?当您从英国下载被动扩展时,您将获得带有英国名称的BehaviorSubject
?我想你已经在你的问题中发布了一段可编译的工作代码。但是我的RX程序集没有行为主题
类。因此,我的假设是,您有自己的行为主题的实现。如果我是对的,你能发布它吗?同位语,它应该是行为主体,不确定“u”是如何进入的。那么在输出中混合了0
和1
,这确实是一个障碍。在我这边,代码按预期工作,只生成一个。你使用的是什么版本的rx?更新到新版本,已修复。你是什么意思?当您从英国下载被动扩展时,您将获得带有英国名称的BehaviorSubject
?我想你已经在你的问题中发布了一段可编译的工作代码。但是我的RX程序集没有行为主题
类。因此,我的假设是,您有自己的行为主题的实现。如果我是对的,你能发布它吗?同位语,它应该是行为主体,不确定“u”是如何进入的。那么在输出中混合了0
和1
,这确实是一个障碍。在我这边,代码按预期工作,只生成一个。你使用什么版本的rx?更新到更新版本,已修复。