我正在尝试使用 Reactive Extensions 来限制 PropertyChanged 通知。有使用 GroupBy 执行此操作的示例,但为每个 PropertyName 创建一个订阅。
我想为所有属性处理 PropertyChanged 事件,并且我需要为每个 PropertyName 限制这些事件。
这是我到目前为止所拥有的,但它会导致死锁。
ValuesPropertyChanged = Observable.FromEventPattern<PropertyChangedEventArgs>(value, "PropertyChanged")
.GroupBy(o => o.EventArgs.PropertyName)
.First()
.Throttle(TimeSpan.FromSeconds(2))
.Subscribe(args => HandlePropertyChanged(args.EventArgs.PropertyName));
死锁发生在对 .First() 的调用中。
如果我将该行更改为:
.Select(o => o.First())
我也试过
.Select(o => o.FirstAsync())
此处GroupBy 的示例看起来非常简洁,但我无法将这些示例转换为我的解决方案。
为什么这会导致死锁,我应该怎么做才能使它工作?