gpt4 book ai didi

c# - 以编程方式取消订阅事件

转载 作者:太空狗 更新时间:2023-10-29 23:24:52 26 4
gpt4 key购买 nike

我有一个使用 COM 对象(COM 公开的 C# 对象)的 vb6 应用程序。 vb6 应用程序正在订阅 COM (C#) 对象发布的事件。

我的问题是我不知道如何以编程方式取消订阅该事件。我知道如何取消订阅的唯一方法是首先不订阅(即在 vb6 代码中注释掉事件处理程序)。

有没有办法在运行时(以编程方式)取消订阅?也许通过识别与 vb6 事件处理程序对应的委托(delegate)而不调用它来在 C# 端做一些事情?

提前致谢。

最佳答案

在 VB6 中,您可以通过保留两个对象引用变量来停止接收事件,一个带有 WithEvents 关键字,一个没有。当您想要订阅时,将第一个设置为与第二个相同的对象,而要取消订阅,将第一个设置为Nothing。您需要确保在要释放对象时释放/替换它们。

Dim MyObject As MyClass
Dim WithEvents MyObjectEvents As MyClass

Public Sub MyObjectEvents_EventName()
MsgBox "Received event"
End Sub

Private Sub Subscribe()
Set MyObjectEvents = MyObject
End Sub

Private Sub Unsubscribe()
Set MyObjectEvents = Nothing
End Sub

关于c# - 以编程方式取消订阅事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12247845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com