Terminar un thread

16/09/2004 - 18:36 por raul | Informe spam
hola

Estoy haciendo un programa que habre un formulario, y he creado un
thread, para que este escuchando un puerto en concreto. Me funciona bien,
pero cuando cierro el formulario, el ejecutable sige, voy al administrador
de tareas y sigue ahi. Yo creo que el error esta en que queda algun hilo
abierto, y por eso no se cierra ¿Como podria matar ese hilo?

El codigo es el siguiente:
private void app_Load(object sender, System.EventArgs e)
{
Thread thread=new Thread(new ThreadStart(recibirSocket));

thread.Start();

}

private void recibirSocket()

{

myServer=new IPEndPoint(myIP,Int32.Parse("20000"));

socket=new
Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

socket.Bind(myServer);

socket.Listen(50);

while(true)

{

try

{

accSocket=socket.Accept();

if(accSocket.Connected)

{

Thread thread=new Thread(new ThreadStart(leerDatos));

thread.Start();


}

private void leerDatos()

{

Byte[]rec=new Byte[1024];

NetworkStream acceptStream=new NetworkStream(accSocket);

int i=0;

while((i=acceptStream.Read(rec,0,rec.Length))!= 0)

{

string recMessage=System.Text.Encoding.Default.GetString(rec);

rec=new Byte[1024];

txtRecibido.Text=recMessage;

}


}

Preguntas similare

Leer las respuestas

#1 william
16/09/2004 - 22:27 | Informe spam
Si quieres que termine el Thread al momento de cerrar el form
Finaliza el Thread en el método Closed del formulario

private

"raul" wrote:

hola

Estoy haciendo un programa que habre un formulario, y he creado un
thread, para que este escuchando un puerto en concreto. Me funciona bien,
pero cuando cierro el formulario, el ejecutable sige, voy al administrador
de tareas y sigue ahi. Yo creo que el error esta en que queda algun hilo
abierto, y por eso no se cierra ¿Como podria matar ese hilo?

El codigo es el siguiente:
private void app_Load(object sender, System.EventArgs e)
{
Thread thread=new Thread(new ThreadStart(recibirSocket));

thread.Start();

}

private void recibirSocket()

{

myServer=new IPEndPoint(myIP,Int32.Parse("20000"));

socket=new
Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

socket.Bind(myServer);

socket.Listen(50);

while(true)

{

try

{

accSocket=socket.Accept();

if(accSocket.Connected)

{

Thread thread=new Thread(new ThreadStart(leerDatos));

thread.Start();


}

private void leerDatos()

{

Byte[]rec=new Byte[1024];

NetworkStream acceptStream=new NetworkStream(accSocket);

int i=0;

while((i=acceptStream.Read(rec,0,rec.Length))!= 0)

{

string recMessage=System.Text.Encoding.Default.GetString(rec);

rec=new Byte[1024];

txtRecibido.Text=recMessage;

}


}





Respuesta Responder a este mensaje
#2 william
16/09/2004 - 22:39 | Informe spam
Estas haciendo inaccesible mas alla de su declaracion la variable que maneja
el Thread.- Una solucion es colocarla como miembro de tu clase Form y en el
evento Closed cierra el hilo...

"raul" wrote:

hola

Estoy haciendo un programa que habre un formulario, y he creado un
thread, para que este escuchando un puerto en concreto. Me funciona bien,
pero cuando cierro el formulario, el ejecutable sige, voy al administrador
de tareas y sigue ahi. Yo creo que el error esta en que queda algun hilo
abierto, y por eso no se cierra ¿Como podria matar ese hilo?

El codigo es el siguiente:
private void app_Load(object sender, System.EventArgs e)
{
Thread thread=new Thread(new ThreadStart(recibirSocket));

thread.Start();

}

private void recibirSocket()

{

myServer=new IPEndPoint(myIP,Int32.Parse("20000"));

socket=new
Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

socket.Bind(myServer);

socket.Listen(50);

while(true)

{

try

{

accSocket=socket.Accept();

if(accSocket.Connected)

{

Thread thread=new Thread(new ThreadStart(leerDatos));

thread.Start();


}

private void leerDatos()

{

Byte[]rec=new Byte[1024];

NetworkStream acceptStream=new NetworkStream(accSocket);

int i=0;

while((i=acceptStream.Read(rec,0,rec.Length))!= 0)

{

string recMessage=System.Text.Encoding.Default.GetString(rec);

rec=new Byte[1024];

txtRecibido.Text=recMessage;

}


}





Respuesta Responder a este mensaje
#3 A.Poblacion
17/09/2004 - 07:47 | Informe spam
Ponle
thread.IsBackground=true;
Los threads de background terminan automáticamente cuando se cierran todos
los threads que no son de background.



"raul" wrote in message
news:%
hola

Estoy haciendo un programa que habre un formulario, y he creado un
thread, para que este escuchando un puerto en concreto. Me funciona bien,
pero cuando cierro el formulario, el ejecutable sige, voy al administrador
de tareas y sigue ahi. Yo creo que el error esta en que queda algun hilo
abierto, y por eso no se cierra ¿Como podria matar ese hilo?

El codigo es el siguiente:
private void app_Load(object sender, System.EventArgs e)
{
Thread thread=new Thread(new ThreadStart(recibirSocket));

thread.Start();

}

private void recibirSocket()

{

myServer=new IPEndPoint(myIP,Int32.Parse("20000"));

socket=new
Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

socket.Bind(myServer);

socket.Listen(50);

while(true)

{

try

{

accSocket=socket.Accept();

if(accSocket.Connected)

{

Thread thread=new Thread(new ThreadStart(leerDatos));

thread.Start();


}

private void leerDatos()

{

Byte[]rec=new Byte[1024];

NetworkStream acceptStream=new NetworkStream(accSocket);

int i=0;

while((i=acceptStream.Read(rec,0,rec.Length))!= 0)

{

string recMessage=System.Text.Encoding.Default.GetString(rec);

rec=new Byte[1024];

txtRecibido.Text=recMessage;

}


}




Respuesta Responder a este mensaje
#4 raul
17/09/2004 - 08:56 | Informe spam
Ahora ya me funciona bien.

Muchisimas gracias.


"raul" escribió en el mensaje
news:%
hola

Estoy haciendo un programa que habre un formulario, y he creado un
thread, para que este escuchando un puerto en concreto. Me funciona bien,
pero cuando cierro el formulario, el ejecutable sige, voy al administrador
de tareas y sigue ahi. Yo creo que el error esta en que queda algun hilo
abierto, y por eso no se cierra ¿Como podria matar ese hilo?

El codigo es el siguiente:
private void app_Load(object sender, System.EventArgs e)
{
Thread thread=new Thread(new ThreadStart(recibirSocket));

thread.Start();

}

private void recibirSocket()

{

myServer=new IPEndPoint(myIP,Int32.Parse("20000"));

socket=new
Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

socket.Bind(myServer);

socket.Listen(50);

while(true)

{

try

{

accSocket=socket.Accept();

if(accSocket.Connected)

{

Thread thread=new Thread(new ThreadStart(leerDatos));

thread.Start();


}

private void leerDatos()

{

Byte[]rec=new Byte[1024];

NetworkStream acceptStream=new NetworkStream(accSocket);

int i=0;

while((i=acceptStream.Read(rec,0,rec.Length))!= 0)

{

string recMessage=System.Text.Encoding.Default.GetString(rec);

rec=new Byte[1024];

txtRecibido.Text=recMessage;

}


}




Respuesta Responder a este mensaje
#5 Mark Elmer
17/09/2004 - 11:08 | Informe spam
cierra el thread, igualalo a null i pasale el recolector
de basura.
th.Close();
th=null;
GC.Collect();
a mi me pasó algo similar usando sockets.
hola

Estoy haciendo un programa que habre un formulario, y


he creado un
thread, para que este escuchando un puerto en concreto.


Me funciona bien,
pero cuando cierro el formulario, el ejecutable sige, voy


al administrador
de tareas y sigue ahi. Yo creo que el error esta en que


queda algun hilo
abierto, y por eso no se cierra ¿Como podria matar ese


hilo?

El codigo es el siguiente:
private void app_Load(object sender, System.EventArgs e)
{
Thread thread=new Thread(new ThreadStart(recibirSocket));

thread.Start();

}

private void recibirSocket()

{

myServer=new IPEndPoint(myIP,Int32.Parse("20000"));

socket=new
Socket


(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.
Tcp);

socket.Bind(myServer);

socket.Listen(50);

while(true)

{

try

{

accSocket=socket.Accept();

if(accSocket.Connected)

{

Thread thread=new Thread(new ThreadStart(leerDatos));

thread.Start();


}

private void leerDatos()

{

Byte[]rec=new Byte[1024];

NetworkStream acceptStream=new NetworkStream(accSocket);

int i=0;

while((i=acceptStream.Read(rec,0,rec.Length))!= 0)

{

string recMessage=System.Text.Encoding.Default.GetString


(rec);

rec=new Byte[1024];

txtRecibido.Text=recMessage;

}


}




.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida