VB.NET 删除处理程序 &匿名方法

发布于 2024-12-05 08:58:48 字数 339 浏览 0 评论 0原文

如何将 RemoveHandler 与匿名方法一起使用?

这是我为 MyClass 类的 MyEvent 事件添加处理程序的方法:

AddHandler MyClass.MyEvent, Sub()
                                '...
                            End Sub

然后如何使用 RemoveHandler 删除 MyClass 的处理程序>MyEvent 活动?

How do I use RemoveHandler with anonymous methods?

This is how I add a handler for MyEvent event of the class MyClass:

AddHandler MyClass.MyEvent, Sub()
                                '...
                            End Sub

How do I then use RemoveHandler to remove the handler for the MyEvent event?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七月上 2024-12-12 08:58:48

一般来说,如果您需要取消订阅事件,我建议不要使用这样的 lambda,而是使用标准方法。

话虽这么说,您仍然可以使用匿名方法,但您需要存储对它的引用以用于取消订阅。如果必须取消订阅匿名方法,至少应该将委托存储在变量中以便稍后将其删除:

Dim subscription = Sub()
                            ' ...
                   End Sub

AddHandler MyClass.MyEvent, subscription

' Later   
RemoveHandler MyClass.MyEvent, subscription

In general, if you need to unsubscribe from the event, I would recommend not using a lambda like this, and instead use a standard method.

That being said, you can still use the anonymous method, but you need to store a reference to it for the unsubscription. If you must unsubscribe an anonymous method, at a minimum, you should store the delegate in a variable to remove it later:

Dim subscription = Sub()
                            ' ...
                   End Sub

AddHandler MyClass.MyEvent, subscription

' Later   
RemoveHandler MyClass.MyEvent, subscription
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文