- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有人可以向我解释一下 BlockReentrancy
的目的是什么吗?方法在ObservableCollection<T>
?
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
用在所有修改集合的方法中。
关于c# - ObservableCollection<T> 中的 block 重入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247427/
嗨,我已经阅读了 Java 中的 ReadWriteLock,但我不确定我是否掌握了它的重入部分。这是两个仅使用一个主线程来显示重入的简短代码示例 public class Locks { p
我在使用 NotifyIcons 时发现了一个重入问题。重现它真的很容易,只需在表单上放置一个 NotiftIcon,点击事件应该如下所示: private bool reentrancyDetect
我正在尝试使用 SQLite 的新 C 接口(interface)预更新 Hook : https://www.sqlite.org/c3ref/preupdate_count.html 现在回答我的
来自阅读here我发现 Actor 是可重入的,并且我希望以下情况成立:如果我有单一类型的转换 ThespianType 但有三个特定的 Actor ThespianType (T1、T2 和 T3)
有人可以向我解释一下 BlockReentrancy 的目的是什么吗?方法在ObservableCollection ? MSDN显示以下内容作为示例: //The typical usage is
我是一名优秀的程序员,十分优秀!