我对VB.NET不是很熟悉所以我不知道这是否可行......
我正在处理的一些代码是设置一个非常大的类的属性。在每个属性的setter中,引发一个事件以指示类数据已更改。然后,事件处理程序将类的实例序列化为数据库。
显然我不希望在每个属性设置后发生这种情况,所以我需要在保存之前有延迟,或其他。
我已经在缓存实现中保留了大量实例,因此一个选项是不时地处理缓存,并将缓存中所有未保存的实例保存到数据库中。
所以我试着看看我是否可以从Application派生一个类(并覆盖DoEvents),但它是NotInheritable,所以没有运气。
有什么想法吗?
答案 0 :(得分:1)
目前尚不清楚您是在谈论Windows消息泵还是.NET事件。无论哪种方式,都有一些常见的方法:
BindingList<T>
,您可以在执行大更新时将RaiseListChangedEvents
设置为false,然后再将其设置为true并调用重置方法BeginEdit()
/ EndEdit()
方法最后一个例子是:Prevent events from firing multiple times from single action
答案 1 :(得分:0)
在EventArgs类中添加一个额外的字段,表示“已处理”。 然后,每个处理程序都会检查此字段,并仅在其为false时继续。然后,一旦完成,它将字段设置为True。
答案 2 :(得分:0)
没有“事件队列”。
您是在问这个问题是因为您看到过一个问题,还是因为您对此有疑虑?如果您询问问题,请编辑您的问题以包含有关问题的详细信息。如果您正在询问问题,请编辑问题以包含您关注的一些信息。