Aplicación que trabaja con Threads

03/09/2009 - 12:10 por javito | Informe spam
Tengo una aplicación que trabaja con Threads y veo que a pesar de que en un
botón de la aplicación se cierra la misma con this.Close(); sin embargo en
el administrador de tareas de Windows aparece el proceso de la Aplicación
abierto, hay alguna forma de hacer que este proceso se cierre desde dentro
de la misma aplicación y no tener que hacerlo desde el administrador de
Tareas.

un saludo

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
03/09/2009 - 13:05 | Informe spam
"javito" wrote in message
news:
Tengo una aplicación que trabaja con Threads y veo que a pesar de que en
un botón de la aplicación se cierra la misma con this.Close(); sin embargo
en el administrador de tareas de Windows aparece el proceso de la
Aplicación abierto, hay alguna forma de hacer que este proceso se cierre
desde dentro de la misma aplicación y no tener que hacerlo desde el
administrador de Tareas.



Sí: Cuando crees el Thread, ponle la propiedad IsBackground=true. Esto
hace que ese thread se cierre de forma automática al cerrarse la aplicación.

Thread t = new Thread(...);
t.IsBackground = true;
t.Start();
Respuesta Responder a este mensaje
#2 javito
03/09/2009 - 13:36 | Informe spam
El problema es que son Threads del ThreadPool predeterminado del sistema, y
ahí ya no se cual es la orden.


"Alberto Poblacion"
escribió en el mensaje news:%
"javito" wrote in message
news:
Tengo una aplicación que trabaja con Threads y veo que a pesar de que en
un botón de la aplicación se cierra la misma con this.Close(); sin
embargo en el administrador de tareas de Windows aparece el proceso de la
Aplicación abierto, hay alguna forma de hacer que este proceso se cierre
desde dentro de la misma aplicación y no tener que hacerlo desde el
administrador de Tareas.



Sí: Cuando crees el Thread, ponle la propiedad IsBackground=true. Esto
hace que ese thread se cierre de forma automática al cerrarse la
aplicación.

Thread t = new Thread(...);
t.IsBackground = true;
t.Start();

Respuesta Responder a este mensaje
#3 Alberto Poblacion
03/09/2009 - 17:10 | Informe spam
"javito" wrote in message
news:
El problema es que son Threads del ThreadPool predeterminado del sistema,
y ahí ya no se cual es la orden.



No lo he probado, pero según el manual debería funcionar bien. Esto es
lo que viene en una "Nota" en la documentación en linea de la clase
ThreadPool:

"The threads in the managed thread pool are background threads. That is,
their IsBackground properties are true. This means that a ThreadPool thread
will not keep an application running after all foreground threads have
exited."

Traducción:

"Los subprocesos del grupo de subprocesos administrados son los subprocesos
de fondo. Es decir, sus propiedades IsBackground son true. Esto significa
que un subproceso ThreadPool no hará que la aplicación se siga ejecutando
cuando todos los subprocesos de primer plano hayan terminado."
Respuesta Responder a este mensaje
#4 javito
04/09/2009 - 09:47 | Informe spam
Gracias Alberto, se te ocurre alguna forma de parar por intervalos el Thread
principal para que permita trabajar a los Threads de Pool, creo los
subprocesos con un bucle for-each y quiero que los subprocesos comiencen en
cuanto se crean, pero ahora no lo hacen hasta que termina el for-each del
Thread principal, y cuando son muchas tareas me bloquea el equipo.

un saludo
Nota: he probado a poner Thread.Sleep(10) en el bucle sin ningun resultado,
hasta que no termina el bucle no se inicia ningún otro Thread

"Alberto Poblacion"
escribió en el mensaje news:
"javito" wrote in message
news:
El problema es que son Threads del ThreadPool predeterminado del sistema,
y ahí ya no se cual es la orden.



No lo he probado, pero según el manual debería funcionar bien. Esto es
lo que viene en una "Nota" en la documentación en linea de la clase
ThreadPool:

"The threads in the managed thread pool are background threads. That is,
their IsBackground properties are true. This means that a ThreadPool
thread will not keep an application running after all foreground threads
have exited."

Traducción:

"Los subprocesos del grupo de subprocesos administrados son los
subprocesos de fondo. Es decir, sus propiedades IsBackground son true.
Esto significa que un subproceso ThreadPool no hará que la aplicación se
siga ejecutando cuando todos los subprocesos de primer plano hayan
terminado."

Respuesta Responder a este mensaje
#5 Alberto Poblacion
04/09/2009 - 12:25 | Informe spam
"javito" wrote in message
news:
Gracias Alberto, se te ocurre alguna forma de parar por intervalos el
Thread principal para que permita trabajar a los Threads de Pool, creo los
subprocesos con un bucle for-each y quiero que los subprocesos comiencen
en cuanto se crean, pero ahora no lo hacen hasta que termina el for-each
del Thread principal, y cuando son muchas tareas me bloquea el equipo.



Tienes que tener algo raro por algún sitio. Los threads se inician
automáticamente en cuanto les haces el .Start, aunque el hilo que los lanza
esté ocupado. Si estás usando un ThreadPool.QueueUserWorkItem, arrancan en
cuanto hay un thread disponible en el pool, cosa que debería ocurrir
inmediatamente salvo que hayas agotado todos los hilos del pool.

Nota: he probado a poner Thread.Sleep(10) en el bucle sin ningun
resultado,



Aunque en teoría no debería tener nada que ver, si quieres hacer la
prueba de dejar "idle" el bucle principal, ponle Application.DoEvents().
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida