【发布时间】:2017-11-21 12:39:50
【问题描述】:
假设我喜欢这样两次:
AddHandler grid.SelectedIndexChanged, AddressOf doSomething
AddHandler grid.SelectedIndexChanged, AddressOf doSomething
根据我的调查,它将被订阅并每次启动两次。意味着我可以根据需要多次订阅同一个处理程序。
但这是否意味着当我像这样只在某个地方做一次时:
RemoveHandler grid.SelectedIndexChanged, AddressOf doSomething
- 这是否意味着我仍然有一个“相同的订阅者”权限,因此根据上述示例处理程序将在删除一次后调用一次?
- 这是因为我必须始终删除处理程序,就像我添加它一样?
- 当我为特定事件执行的 removehandler 命令比我添加的多时会怎样?
- 有没有办法从特定事件中删除所有订阅者?我问是因为
说明:我有一个由以前的开发人员开发的大型项目,他总是在做addhandler,从很多不同的地方删除处理程序......我认识到有时即使在特定时间不应该是任何订阅者离开(他的 removehandler ..)他们甚至运行了几次相同的处理程序被调用!问题是表单包含“长寿对象”,我现在正在努力解决这个项目。希望能得到你的帮助。
谢谢!
【问题讨论】:
-
您的问题点 1 到 3 是您可以自己测试的内容。第四点是您可以简单地自己搜索并获得的内容,例如,this
-
虽然上面的评论可能很明显,但我有完全相同的问题,这个问题现在首先把我带到了 SO 网站,并帮助我解决了这些问题。
标签: vb.net