Reactive Linq Observable 在触发事件时不通知

Reactive Linq Observable doesn't notify when an event is fired

我正在努力了解 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());

或者您可以使用 this overload

来简化它
Observable.FromEventPattern<StGroupItemsModified>(...)