首页 > 解决方案 > 在 Visual Studio 2019 (C#) 中找不到 MqttMsgSubscribe.cs 错误

问题描述

我有一个奇怪的错误,代码如下:

MqttClient mClient = null;   
string[] topics = { "topic1", "topic1", "topic3" , "topic4"};

mClient = new MqttClient("127.0.0.1");
mClient.Connect(Guid.NewGuid().ToString());

if (!mClient.IsConnected) {
    Console.WriteLine("Error Connecting to message broker...");
    return;
}

 Client.MqttMsgPublishReceived += MClient_MqttMsgPublishReceived;
 byte[] qosLevels = { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
 MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE };
 mClient.Subscribe(topics, qosLevels);

使用 4 个字符串({ "topic1", "topic1", "topic3" , "topic4"}) ,我MqttMsgSubscribe.cs没有找到错误,但使用 3个字符串({ "topic1", "topic1", "topic3"}),应用程序运行良好,没有任何错误,有人可以帮助我吗?

标签: c#mqtt

解决方案


这是因为您的topics数组有 4 个项目,但qosLevels只有 3 个 :) 这些数组中的项目数应该完全相同。

所以,这样做:

byte[] qosLevels = { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
                     MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
                     MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE,
                     MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE };

推荐阅读