C# M2Mqtt库未发布消息,线程以代码259退出

C# M2Mqtt库未发布消息,线程以代码259退出,c#,mqtt,C#,Mqtt,在我当前的.NET项目中,我希望通过MQTT向代理发布消息,但我尝试了几种方法来实现这一点,但都不起作用。我想使用(),但我也尝试了,但没有成功 我目前解决这个问题的方法是让最简单的实现工作,但即使是这个也不起作用。我只是创建MqttClient的一个实例,连接到代理(调试显示通过“IsConnected”可以工作),然后发布一条消息(简单字符串“Local:0:user:dev”)。尽管如此,我的经纪人从未收到此消息,我从VisualStudio得到的唯一反应是以下4行: Der线程0x13a

在我当前的.NET项目中,我希望通过MQTT向代理发布消息,但我尝试了几种方法来实现这一点,但都不起作用。我想使用(),但我也尝试了,但没有成功

我目前解决这个问题的方法是让最简单的实现工作,但即使是这个也不起作用。我只是创建MqttClient的一个实例,连接到代理(调试显示通过“IsConnected”可以工作),然后发布一条消息(简单字符串“Local:0:user:dev”)。尽管如此,我的经纪人从未收到此消息,我从VisualStudio得到的唯一反应是以下4行:

Der线程0x13a8 hat mit代码259(0x103)geendet。 Der线程0x16d4 hat mit代码259(0x103)geendet。 Der线程0x1ab0 hat mit代码259(0x103)geendet。 Der线程0xa48 hat mit代码259(0x103)geendet

此消息是德语,与前面提到的线程退出消息相同

我正在使用这段代码来连接、发布和断开连接,我已经尝试了没有“断开连接”部分的相同代码

MqttClient client = new MqttClient("127.0.0.1");
client.Connect("client");
client.Publish("cdj/new", Encoding.UTF8.GetBytes(message));
client.Disconnect();
只是为了确保代理正在工作,它可以接收通过Paho MQTT实用程序发送的完全相同的消息。我正在使用.NET4.0和M2Mqtt版本4.0(因为最新版本适用于.NET4.5)


我不知道我应该做什么不同,特别是因为没有任何验证或错误消息指示哪里出了问题。

似乎我通过代码或GC在发布操作期间关闭了网络套接字,因此,现在我的解决方案是尽可能长地保持与代理的连接,以发送多条消息及其工作状态


作为一种在发布操作完成后立即关闭套接字的解决方案,我建议使用MQTTMSGPPublished事件断开客户端连接。

我不熟悉.net代码,但是否存在onConnected回调?如果是这样,请将发布和断开连接调用移动到onConnected回调内部。您可能试图在连接完成之前发送。没有未连接的回调,丢失的连接不是问题所在,但在发布操作期间,似乎是I(通过“断开”)或GC关闭了套接字。现在,我尽可能长时间地保持连接以发送多条消息,无论如何,这应该是更好的做法;)