Foros del Web » Programación para mayores de 30 ;) » .NET »

[C#] Cierro el formulario y el subproceso continua ejecutandose

Estas en el tema de [C#] Cierro el formulario y el subproceso continua ejecutandose en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/04/2011, 09:47
 
Fecha de Ingreso: julio-2009
Mensajes: 8
Antigüedad: 14 años, 9 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.
  #2 (permalink)  
Antiguo 26/04/2011, 10:01
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: [C#] Cierro el formulario y el subproceso continua ejecutandose

Hola Reenokazar en el evento FormClosing de tu form cierra el subproceso que mencionas :

Código c#:
Ver original
  1. tarea.Abort();

para ello tendrias que declarar tu thread fuera de tu load como declaracion de una variable local Thread tarea = new Thread(escuchar);, de manera que lo controlas en el evento formclosing. Espero haberte ayudado. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 26/04/2011, 13:45
 
Fecha de Ingreso: julio-2009
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: [C#] Cierro el formulario y el subproceso continua ejecutandose

Cita:
Iniciado por Aquaventus Ver Mensaje
Hola Reenokazar en el evento FormClosing de tu form cierra el subproceso que mencionas :

Código c#:
Ver original
  1. tarea.Abort();

para ello tendrias que declarar tu thread fuera de tu load como declaracion de una variable local Thread tarea = new Thread(escuchar);, de manera que lo controlas en el evento formclosing. Espero haberte ayudado. Saludos!.
Gracias por la respuesta, al final lo solucione de manera mas simple, agregando:

Código C:
Ver original
  1. tarea.IsBackground = true;

antes de crear el Thread, de esta forma se cierra sin problemas.

Etiquetas: asincronico, socket, subprocesos, threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:47.