M2Mqtt库未发布消息,线程退出代码为259

本文关键字:线程 退出 代码 消息 布消息 M2Mqtt | 更新日期: 2023-09-27 18:14:49

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

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

线程0x13a8,代码259 (0x103) genendet。代码259 (0x103)的线程0x16d4。代码为259 (0x103)的线程0x1ab0。线程0xa48,代码259 (0x103) geendet.

此消息是德文的,它与这里提到的线程退出消息相同。

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

MqttClient client = new MqttClient("127.0.0.1");
client.Connect("client");
client.Publish("cdj/new", Encoding.UTF8.GetBytes(message));
client.Disconnect();

只是为了确保代理正在工作,并且它可以接收通过Paho MQTT Utility发送的完全相同的消息。我正在使用。net 4.0和M2Mqtt 4.0版本(因为最新版本是针对。net 4.5的)。

我不知道我应该做什么不同,特别是因为没有异常或错误消息表明哪里出了问题

M2Mqtt库未发布消息,线程退出代码为259

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

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