【发布时间】:2013-03-01 12:05:08
【问题描述】:
我正在尝试使用响应式扩展来限制 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 here 的示例看起来非常简洁,但我无法将这些示例转换为我的解决方案。
为什么这会导致死锁,我应该怎么做才能使它工作?
【问题讨论】:
标签: system.reactive inotifypropertychanged