¿Qué os parece esto?
Código:
private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread objHebra = new System.Threading.Thread(new System.Threading.ThreadStart(ProcesarPeticiones));
objHebra.IsBackground = true;
objHebra.Start();
}
private System.Collections.Queue _ColaPeticiones = new System.Collections.Queue();
private void ProcesarPeticiones()
{
bool procesarPeticiones = true;
while (procesarPeticiones)
{
if (_ColaPeticiones.Count > 0)
{
Object[] objetosRecibidos = (Object[])_ColaPeticiones.Dequeue();
ClsMensaje objMensaje = (ClsMensaje)objetosRecibidos[0];
TcpClient clienteConectado = (TcpClient)objetosRecibidos[1];
ProcesarMensaje(objMensaje, clienteConectado);
}else{
procesarPeticiones = false;
}
}
}
Y cada vez que se vaya a meter una petición nueva, ejecutar la Hebra. ¿Como lo veis?