源码地址:https://github.com/chkr1011/MQTTnet
ReasonCode是MQTT V5开始代替ReturnCode的,官方示例里也有互相转换的代码。
参考:https://blog.csdn.net/yangwohenmai1/article/details/90398238
try
{
//Task中抛出的异常可以捕获,但是也不是直接捕获,而是由调用Wait()方法或者访问Result属性的时候,由他们获得异常,将这个异常包装成AggregateException类型,或者直接以Exception,抛出捕获
//方法1
//MqttClientConnectResult result = mqttClient.ConnectAsync(mqttClientOptions).Result;
//方法2
Task<MqttClientConnectResult> result = mqttClient.ConnectAsync(mqttClientOptions);
result.Wait();
}
catch (Exception ex)
{
MqttClientConnectResultCode resulCode=((MqttConnectingFailedException)ex.InnerException).ResultCode;
}
连接时能获取的Code只有一部分,例如BadUserNameOrPassword,NotAuthorized等。返回其他Code的时候,只会出现超时现象。