public void Start() { try { // Assinar o recebimento de this.OnNegociosHandler = new MdsHttpClient.OnNegociosHandler(OnNegocios); MdsHttpClient.Instance.OnNegociosEvent += this.OnNegociosHandler; _running = true; _queueMsgs = new Queue <MdsNegociosEventArgs>(); _dicTrading = new Dictionary <string, MdsTradingInfo>(); // Conectar ao streamer if (!this.ConnectToStreamer()) { logger.Info("Nao foi possivel conectar ao servidor Streamer"); } _thProcessTrading = new Thread(new ThreadStart(this.ProcessMdsNegocios)); _thProcessTrading.Start(); } catch (Exception ex) { logger.Error("Problemas no start do StreamerManager: " + ex.Message, ex); } }
public void Stop() { try { _running = false; MdsHttpClient.Instance.OnNegociosEvent -= this.OnNegociosHandler; this.OnNegociosHandler = null; // Desassinar os papeis foreach (KeyValuePair <string, MdsTradingInfo> item in _dicTrading) { MdsAssinatura mdsSign = new MdsAssinatura(); mdsSign.Instrumento = item.Key.ToUpper().Trim(); mdsSign.Sinal = TipoSinal.CotacaoRapida; MdsHttpClient.Instance.CancelaAssinatura(mdsSign); logger.Info("Desassinando instrumento: " + item.Key); mdsSign = null; } // Desconectar ao streamer if (!this.DisconnectStreamer()) { logger.Info("Nao foi possivel desconectar o Streamer!"); } else { logger.Info("Streamer desconectado!"); } // Limpar controle de assinaturas if (null != _dicTrading) { _dicTrading.Clear(); _dicTrading = null; } if (null != _queueMsgs) { _queueMsgs.Clear(); _queueMsgs = null; } } catch (Exception ex) { logger.Error("Problemas no stop do StreamerManager: " + ex.Message, ex); } }