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:
Este método es ejecutado por una hebra, y en otra parte de la aplicación, voy metiendo los mensajes en el Queque.private void MetodoCola() { while (true) { if (_Cola.Count > 0) { this.Invoke((MethodInvoker)delegate { ClsMensaje objMensaje = (ClsMensaje)_Cola.Dequeue(); EnviarMensaje(objMensaje.ToString()) }); } } }
¿Ven correcto esta forma de trabajar? Espero haberme explicado y puedan darme sugerencias.
Desde ya, muchos saludos.