有人可以对我解释一下BlockReentrancy
方法的目的是什么吗?
MSDN显示以下示例:
//The typical usage is to wrap an OnCollectionChanged call within a using scope, as in the following example:
using (BlockReentrancy())
{
// OnCollectionChanged call
}
但这似乎并没有为我澄清目的。有人在乎解释吗?
最佳答案
ObservableCollection
实现INotifyCollectionChanged
,因此它具有CollectionChanged
事件。如果有此事件的订阅者,则可以在集合已处于通知过程中的同时进一步修改集合。由于CollectionChanged
事件可准确跟踪更改的内容,因此这种交互可能会变得非常困惑。
结果,在特殊情况下,ObservableCollection
允许CollectionChanged
事件的单个订阅者从其处理程序中修改集合。但是,如果有两个或更多CollectionChanged
事件订阅者,则不允许修改CollectionChanged
处理程序中的集合。
这对方法BlockReentrancy
和CheckReentancy
用于实现此逻辑。在BlockReentrancy
方法的开始处使用OnCollectionChanged
,在所有修改集合的方法中都使用CheckReentancy
。