public virtual void Run() { long lastlog = 0; while (_bKeepRunning) { if (_mds == null || _mds.IsConectado() == false) { _mds = new MDSPackageSocket(); _mds.IpAddr = ConfigurationManager.AppSettings["MDSAddress"].ToString(); _mds.Port = Convert.ToInt32(ConfigurationManager.AppSettings["MDSPort"].ToString()); _mds.OnMensagemMdsReceived += new MDSMessageReceivedHandler(OnCotacao); _mds.OpenConnection(); } List <MDSMessageEventArgs> tmpQueue = new List <MDSMessageEventArgs>(); MDSMessageEventArgs mensagem = null; if (queueMensagemMds.TryDequeue(out mensagem)) { switch (mensagem.TipoMsg) { case MDSPackageSocket.TIPOMSG_NEGOCIO: ProcessarMensagemCotacao(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_CADASTROBASICO: ProcessarMensagemCadastroBasico(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_ABERTURA: ProcessarMensagemAbertura(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_FECHAMENTO: ProcessarMensagemFechamento(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_AJUSTE: ProcessarMensagemAjuste(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_UNITARIO: ProcessarMensagemUnitario(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_COMPOSICAOINDICE: ProcessarMensagemComposicaoIndice(mensagem.Message); break; } TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - lastlog); if (ts.TotalMilliseconds > 2000) { logger.Info("Fila de mensagens a processar: " + queueMensagemMds.Count); lastlog = DateTime.Now.Ticks; } continue; } Thread.Sleep(250); } }
public virtual void Run() { bool bWait = false; while (_bKeepRunning) { if (_mds == null || _mds.IsConectado() == false) { _mds = new MDSPackageSocket(); _mds.IpAddr = _config.MDSAddress; _mds.Port = _config.MDSPort; _mds.OnMensagemMdsReceived += new MDSMessageReceivedHandler(OnCotacao); _mds.OpenConnection(); } List <MDSMessageEventArgs> tmpQueue = new List <MDSMessageEventArgs>(); lock (queueMensagemMds) { tmpQueue = queueMensagemMds.ToList(); queueMensagemMds.Clear(); } foreach (MDSMessageEventArgs mensagem in tmpQueue) { switch (mensagem.TipoMsg) { case MDSPackageSocket.TIPOMSG_NEGOCIO: ProcessarMensagemCotacao(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_CADASTROBASICO: ProcessarMensagemCadastroBasico(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_ABERTURA: ProcessarMensagemAbertura(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_FECHAMENTO: ProcessarMensagemFechamento(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_AJUSTE: ProcessarMensagemAjuste(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_UNITARIO: ProcessarMensagemUnitario(mensagem.Message); break; case MDSPackageSocket.TIPOMSG_COMPOSICAOINDICE: ProcessarMensagemComposicaoIndice(mensagem.Message); break; } } lock (queueMensagemMds) { if (queueMensagemMds.Count == 0) { bWait = true; } else { bWait = false; } } if (bWait) { Thread.Sleep(250); } } }