Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/04/2011, 09:47
Reenokazar
 
Fecha de Ingreso: julio-2009
Mensajes: 8
Antigüedad: 15 años, 3 meses
Puntos: 0
[C#] Cierro el formulario y el subproceso continua ejecutandose

Hola que tal,
el tema es que estoy usando un subproceso asincronico (socket) y un thread. El problema esta que cuando cierro el formulario el subproceso no se cierra y sigue a la espera... el codigo es corto y simple, para que puedan ver:

(es C Sharp)

Código C:
Ver original
  1. public static ManualResetEvent allDone = new ManualResetEvent(false);
  2.  
  3.         public void escuchar()
  4.         {
  5.             IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 1050);
  6.             Socket escuchar = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  7.             try
  8.             {
  9.                 escuchar.Bind(ipep);
  10.                 escuchar.Listen(100);
  11.                 while (true)
  12.                 {
  13.                     allDone.Reset();
  14.                     mensaje = "A la espera de peticiones...";
  15.                     escuchar.BeginAccept(new AsyncCallback(aceptar), escuchar);
  16.                     allDone.WaitOne();
  17.                 }
  18.             }
  19.             catch (Exception e)
  20.             {
  21.                 mensaje = e.ToString();
  22.             }
  23.         }
  24.  
  25.         private void Form1_Load(object sender, EventArgs e)
  26.         {
  27.             Thread tarea = new Thread(escuchar);
  28.             tarea.Start();
  29.         }

Con este codigo, cuando salgo del formulario (por la cruz/equis) el codigo sigue ejecutandose y no entiendo el porque... si alguien me podria explicar se lo agradeceria, un saludo.