Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/01/2009, 18:08
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Es correcto el uso de System.Collections.Queque

Buenas foreros !!!

Tengo una duda de "Funcionalidad" sobre si la forma en la que estoy usando este objeto es la correcta o no.

Tengo una aplicación de Sockets. Servidor y Clientes.

Cada cliente se conecta al servidor, y manda un mensaje para enviar a todos los clientes conectados. Ok, funciona bárbaro, el envio de mensajes es asíncrono y va todo perfecto.

El problema es el siguiente:
Cuando se conectan dos a la vez y envian mensajes los dos a la vez a veces al recién conectado no le llega el mensaje del otro cliente recién conectado.

Para solucionar el problema, lo que hice es meter los mensajes en un Queque y en un método gestionado por una Hebra, enviar los mensajes del Queque:

Código:
        private void MetodoCola()
        {

                while (true)
                {
                    if (_Cola.Count > 0)
                    {
                        this.Invoke((MethodInvoker)delegate
                        {
                            ClsMensaje objMensaje = (ClsMensaje)_Cola.Dequeue();
                            EnviarMensaje(objMensaje.ToString())
                        });
                    }
                }            
        }
Este método es ejecutado por una hebra, y en otra parte de la aplicación, voy metiendo los mensajes en el Queque.

¿Ven correcto esta forma de trabajar? Espero haberme explicado y puedan darme sugerencias.

Desde ya, muchos saludos.
__________________
Charlie.