/// <summary> /// 读数据线程 /// </summary> private void DoWork() { lock (m_locker) { try { var connArgs = new MqttConnectionArgs() { ClientId = m_clientId, Hostname = m_mqttServerAddress, Port = m_mqttPort, Keepalive = new TimeSpan(1, 0, 0) }; using (m_mqttClient = new MqttConnection(connArgs)) { m_mqttClient.Connect(); while (m_runFlag) { USeMarketData marketData = null; m_marketDataQueue.TryDequeue(out marketData); if (marketData == null) { Thread.Sleep(1000); continue; } Debug.WriteLine(string.Format("当前MQTT链接:{0}", connArgs.ClientId)); //[hanyu]暂时只推送上期的品种行情 if (marketData.Instrument.Market == USeMarket.SHFE || marketData.Instrument.Market == USeMarket.LME) { InternalSendTotMQTT(marketData); } } } } catch (Exception ex) { Debug.WriteLine(ex.Message); string text = string.Format("** {0}链接MQTT失败,{1}", this.StoreageName, ex.Message); m_eventLogger.WriteError(text); USeNotifyEventArgs notify = new USeNotifyEventArgs(USeNotifyLevel.Warning, text); SafeRaiseNotifyEvent(this, notify); } finally { m_mqttClient.Disconnect(); DoWork(); } } }
private void StopMQTTChannel() { try { if (m_mqttClient != null) { m_mqttClient.Disconnect(); m_mqttClient = null; } } catch (Exception ex) { string text = "关闭MQTTChannel失败," + ex.Message; m_eventLogger.WriteWarning(text); USeNotifyEventArgs notify = new USeNotifyEventArgs(USeNotifyLevel.Warning, text); SafeRaiseNotifyEvent(this, notify); } }
private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { MqttConnection.Disconnect(); }