C# 如何在反应式框架流中组合中间事件?
我对Rx还是个新手,很难弄明白如何表达这个(看似)简单的订阅。我在找这样的东西:C# 如何在反应式框架流中组合中间事件?,c#,system.reactive,reactive-programming,C#,System.reactive,Reactive Programming,我对Rx还是个新手,很难弄明白如何表达这个(看似)简单的订阅。我在找这样的东西: bool pendingRefresh = false; Observable .Merge( _selectionChanged, _objectManager .PropertiesChanged .Where(objects => objects.Contains(_selectedObject))) .S
bool pendingRefresh = false;
Observable
.Merge(
_selectionChanged,
_objectManager
.PropertiesChanged
.Where(objects => objects.Contains(_selectedObject)))
.Subscribe(_ => pendingRefresh = true);
_actionManager
.IsInTransaction.Where(isIn => !isIn)
.Throttle(TimeSpan.FromSeconds(0.15))
.Subscribe(_ =>
{
if (pendingRefresh)
{
pendingRefresh = false;
Refresh();
}
});
bool pendingRefresh = false;
Observable
.Merge(
_selectionChanged,
_objectManager
.PropertiesChanged
.Where(objects => objects.Contains(_selectedObject)))
.Subscribe(_ => pendingRefresh = true);
_actionManager
.IsInTransaction.Where(isIn => !isIn)
.Throttle(TimeSpan.FromSeconds(0.15))
.Subscribe(_ =>
{
if (pendingRefresh)
{
pendingRefresh = false;
Refresh();
}
});
工作正常,但我想知道我是否可以只订阅一次。看起来你走对了方向。如果您不关心收到多少更改通知,请查看Any operator:
public static IObservable<bool> Any<TSource>(this IObservable<TSource> source)
公共静态IObservable Any(此IObservable源)
这只会触发一次,当第一条消息出现时,它将触发true,如果未完成而没有任何消息出现,它将触发false
希望这有帮助
杰弗里