我已经为此苦苦挣扎了好几个小时。希望你们中的一些 vb.net 大师可以帮助我恢复理智。
场景:我有一个对象 (mqtt_client),它公开了我需要捕获和处理的连接/断开连接事件。我需要可以从我的代码中的多个子/函数/模块访问该对象。所以我在封闭类中但在代码块之外将其声明为 Public。
如果我像这样在主子之外声明它:
Public mqtt_client = New MqttFactory().CreateManagedMqttClient
Public Sub Ruptela_Server(sender As Object, e As EventArgs) Handles MyBase.Load
' Add Event Handlers for Connected and disconnected events
AddHandler mqtt_client.Disconnected, AddressOf MQTTclient_disconnected_handler
AddHandler mqtt_client.Connected, AddressOf MQTTclient_connected_handler
addhandler 失败,因为 mqtt_client 没有公开事件,我不知道为什么。
但是,如果我这样做:
Public Sub Ruptela_Server(sender As Object, e As EventArgs) Handles MyBase.Load
Dim mqtt_client = New MqttFactory().CreateManagedMqttClient
' Add Event Handlers for Connected and disconnected events
AddHandler mqtt_client.Disconnected, AddressOf MQTTclient_disconnected_handler
AddHandler mqtt_client.Connected, AddressOf MQTTclient_connected_handler
然后 addhandlers 很好地连接起来,但是该对象仅在 sub 内部具有范围,并且不能从不同的模块访问。
我不能将所有这些代码放在封闭块之外,因为 addhandler 是一种方法并且不会在那里工作。
我该怎么办?任何指导将不胜感激。