为什么
var a = Observable.Interval(TimeSpan.FromSeconds(1))
.Publish();
a.Subscribe(o =>
{
Console.WriteLine("Test");
});
a.Connect();
火,但不是
var a = Observable.Interval(TimeSpan.FromSeconds(1))
.MaxBy(o=>o)
.Publish();
a.Subscribe(o =>
{
Console.WriteLine("Test");
});
a.Connect();
我正在尝试在不同的情况下使用MaxBy,但甚至无法使以上功能正常工作。
这是我更复杂的例子
var _telemetryBatchObservable = Observable.FromEventPattern<DeviceStateStreamEventArg>(
ev => DeviceStateStreamEvent += ev,
ev => DeviceStateStreamEvent -= ev)
.Synchronize()
.GroupBy(o => o.EventArgs.DeviceId)
.Select(o => o.MaxBy(i => i.EventArgs.DateTimeOffset))
.SelectMany(o => o.Select(i => i))
.SelectMany(o => o.Select(i => i))
.Buffer(TimeSpan.FromMilliseconds(5000), 100)
.Publish();
最佳答案
当源可观察者终止时,Max
和MaxBy
仅发出单个值。如果您有不间断的信号源,它们将永远不会发光。
尝试使用以下代码作为反示例:
var a = Observable.Interval(TimeSpan.FromSeconds(1))
.Take(3) //causes termination after 3 values
.MaxBy(o => o)
.Publish();
关于c# - react 性扩展.MaxBy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45840230/