【发布时间】:2015-11-27 09:57:34
【问题描述】:
我试图了解 Observable 模式,并基本上解决现有代码在触发事件时不通知的问题。
我观察到的事件是ResizeGroupItemEnded,定义为:
public event EventHandler<StGroupItemsModified> ResizeGroupItemEnded
所以,模式的设置如下:
private readonly IDisposable _groupUpdates;
private static readonly TimeSpan UpdateThrottle = TimeSpan.FromMilliseconds(300);
...
_groupUpdates = Observable.FromEventPattern<EventHandler<StGroupItemsModified>, PropertyChangedEventArgs>(e => groupUICtrl.ResizeGroupItemEnded += e, e => groupUICtrl.ResizeGroupItemEnded -= e)
.Throttle(UpdateThrottle)
.ObserveOn(SynchronizationContext.Current)
.Subscribe(x => RefreshVLines());
...
public void Dispose()
{
...
}
private void RefreshVLines()
{
// We should be notified here when groupUICtrl.ResizeGroupItemEnded triggers
}
为什么在触发groupUICtrl.ResizeGroupItemEnded 时没有调用RefreshVLinesStep()?请问有什么想法吗?
【问题讨论】:
-
这可能只是一个错字 - 但您订阅的是
RefreshVLines()而不是RefreshVLinesStep()。你能确认这是否是一个错字吗? -
是的,这是一个错字。感谢您的关注
-
您显示的代码中没有任何内容可以解释发生了什么。您需要提供minimal reproducible example。
-
是的,这就是完整的代码,它显示了 Observable 模式的注册发生的位置。
-
当您预计会有大量事件随后出现暂停,并且您只想响应暂停前的最后一个事件(例如,在搜索框中输入)时,使用限制。
标签: c# linq system.reactive observable