反应式 Linq 可观察对象在触发事件时不会发出通知



我正试图了解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()?有什么想法吗?

您使用了错误的泛型参数。您的代码实际上抛出了System.ArgumentException异常

您应该将PropertyChangedEventArgs更改为实际的事件参数,即StGroupItemsModified

_groupUpdates = Observable.FromEventPattern<EventHandler<StGroupItemsModified>, StGroupItemsModified>(e => groupUICtrl.ResizeGroupItemEnded += e, e => groupUICtrl.ResizeGroupItemEnded -= e)
                          .Throttle(UpdateThrottle)
                          .ObserveOn(SynchronizationContext.Current)
                          .Subscribe(x => RefreshVLines());

或者你可以通过使用这个过载来简化它

Observable.FromEventPattern<StGroupItemsModified>(...)

相关内容

  • 没有找到相关文章

最新更新