public static void Reconnect_Using_Timer(){/** This sample shows how to reconnect when the connection was dropped.* This approach uses a custom Task/Thread which will monitor the connection status.* This is the recommended way but requires more custom code!*/var mqttFactory = new MqttFactory();using (var mqttClient = mqttFactory.CreateMqttClient()){var mqttClientOptions = new MqttClientOptionsBuilder().WithTcpServer("broker.hivemq.com").Build();_ = Task.Run(async () =>{// User proper cancellation and no while(true).while (true){try{// This code will also do the very first connect! So no call to _ConnectAsync_ is required in the first place.if (!await mqttClient.TryPingAsync()){await mqttClient.ConnectAsync(mqttClientOptions, CancellationToken.None);// Subscribe to topics when session is clean etc.Console.WriteLine("The MQTT client is connected.");}}catch{// Handle the exception properly (logging etc.). }finally{// Check the connection state every 5 seconds and perform a reconnect if required.await Task.Delay(TimeSpan.FromSeconds(5));}}});Console.WriteLine("Press <Enter> to exit");Console.ReadLine();}}
基本API的使用