Work = New ExampleWork()
这里的Work
是一个withevents
变量,我使用handles子句来处理由ExampleWork
对象触发的各种事件。但是,在ExampleWork
的构造函数返回之前,不会分配事件处理程序。现在,我如何处理从构造函数激发的任何事件?我可以将构造函数逻辑移到一个单独的方法中,并在构造函数返回后调用它,从而处理所有触发的事件,包括从构造函数触发的事件。然而,它看起来并不好。处理这种情况的最佳方法是什么?
发布于 2009-11-08 15:55:54
忽略事件处理的VB语法糖,如果一个对象在其构造过程中引发了自身的事件,那就是一种设计的味道。只有两种方式可以订阅这些事件:
基本上,尽量避免在构造过程中在对象上引发事件。理想情况下,让构造函数本身变得简单漂亮,让对象保持有效的初始状态。
发布于 2009-11-09 23:46:29
处理此问题的一种方法是使用表单或类布尔变量,例如,将其初始化为false dim loading as boolean = true
。然后在加载或初始化完成后将其设置为true。检查违规事件处理程序中的标志。
不过,在实现这样一个乱七八糟的标志之前,我肯定会检查一下Tony的建议。
https://stackoverflow.com/questions/1695568
复制相似问题