Matar procesos

22/05/2007 - 11:12 por AiTdX100MIl | Informe spam
Mi aplicación lanza un proceso externo para ejecutar un programa mediante
Process. Sin embargo, cuando cierro mi aplicación el proceso externo continua
corriendo hasta que lo mato manualmente o termina. ¿Cómo puedo hacer que al
salir de mi programa mate este proceso?Gracias
Aitdx

Preguntas similare

Leer las respuestas

#1 AiTdX100MIl
22/05/2007 - 16:06 | Informe spam
Sí, eso ya lo sabía. Mi cuestión era si existe alguna propiedad que me
proporcione los procesos que actualmente están en ejecución para poder
matarlos. Pensé en introducir los procesos externos que estoy ejecutando en
un array y cuando envío la orden de cerrar una ventana recorrer dicho array
matando los procesos si estaban vivos. Pero si uno de estos procesos termina
antes al recorrer el array al intentar acceder al mismo salta una excepción.
Otra posibilidad es introducirlo en el array mientras se ejecuta y cuando
termina sacarlo. De modo que en el array se hallan sólo aquellos que se
encuentren vivos. Gracias.
Aitdx


"Jowie" wrote:

Hechale un ojo a System.Diagnostics.Process tiene un metodo que es
kill

Un saludo


Respuesta Responder a este mensaje
#2 RFOG
22/05/2007 - 16:54 | Informe spam
En Tue, 22 May 2007 16:06:02 +0200, AiTdX100MIl
escribió:

Sí, eso ya lo sabía. Mi cuestión era si existe alguna propiedad que me
proporcione los procesos que actualmente están en ejecución para poder
matarlos. Pensé en introducir los procesos externos que estoy ejecutando
en
un array y cuando envío la orden de cerrar una ventana recorrer dicho
array
matando los procesos si estaban vivos. Pero si uno de estos procesos
termina
antes al recorrer el array al intentar acceder al mismo salta una
excepción.



Pues encierras el hecho de matarlos en un bloque try/catch.

Otra posibilidad es introducirlo en el array mientras se ejecuta y cuando
termina sacarlo. De modo que en el array se hallan sólo aquellos que se
encuentren vivos. Gracias.



La mejor forma es que puedas enviarles un mensaje (un simple "volatile
bool" compartido serviría) para que ellos pudieran salir solos sin
necesidad de darle un susto al .NET ni al recolector de basura.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El que dé rosas de comer al burro, cobrará con un rebuzno.
Respuesta Responder a este mensaje
#3 AiTdX100MIl
22/05/2007 - 17:27 | Informe spam
Muchas gracias por contestar. Lo siento pero no entiendo a que te refieres con

"La mejor forma es que puedas enviarles un mensaje (un simple "volatile
bool" compartido serviría) para que ellos pudieran salir solos sin
necesidad de darle un susto al .NET ni al recolector de basura."

¿Cómo puedo hacer esto? Yo quiero matarles al salir de la aplicación y no
dejarles actuar hasta que terminen
Aitdx


"RFOG" wrote:

En Tue, 22 May 2007 16:06:02 +0200, AiTdX100MIl
escribió:

> Sí, eso ya lo sabía. Mi cuestión era si existe alguna propiedad que me
> proporcione los procesos que actualmente están en ejecución para poder
> matarlos. Pensé en introducir los procesos externos que estoy ejecutando
> en
> un array y cuando envío la orden de cerrar una ventana recorrer dicho
> array
> matando los procesos si estaban vivos. Pero si uno de estos procesos
> termina
> antes al recorrer el array al intentar acceder al mismo salta una
> excepción.

Pues encierras el hecho de matarlos en un bloque try/catch.

> Otra posibilidad es introducirlo en el array mientras se ejecuta y cuando
> termina sacarlo. De modo que en el array se hallan sólo aquellos que se
> encuentren vivos. Gracias.

La mejor forma es que puedas enviarles un mensaje (un simple "volatile
bool" compartido serviría) para que ellos pudieran salir solos sin
necesidad de darle un susto al .NET ni al recolector de basura.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> El que dé rosas de comer al burro, cobrará con un rebuzno.

Respuesta Responder a este mensaje
#4 RFOG
22/05/2007 - 17:45 | Informe spam
En Tue, 22 May 2007 17:27:01 +0200, AiTdX100MIl
escribió:

Muchas gracias por contestar. Lo siento pero no entiendo a que te
refieres con

"La mejor forma es que puedas enviarles un mensaje (un simple "volatile
bool" compartido serviría) para que ellos pudieran salir solos sin
necesidad de darle un susto al .NET ni al recolector de basura."

¿Cómo puedo hacer esto? Yo quiero matarles al salir de la aplicación y no
dejarles actuar hasta que terminen



Si los procesos a los que aluden son clases o métodos propios (y no
ejecutables de terceros), puedes crearte una variable miembro (o un
delegado si son clases independientes) de la siguiente forma:

class hilogen
{
private volatile bool terminar;

public hilogen() {terminar=false;}

puiblic proceso()
{
for(;;)
{
// hacer cosas
if(terminar)
break;
}
}

Y en cualquier otro lado, en la aplicación:

terminar=true;


Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El que dé rosas de comer al burro, cobrará con un rebuzno.
Respuesta Responder a este mensaje
#5 AiTdX100MIl
22/05/2007 - 17:56 | Informe spam
Se trata de un proceso que ejecuta un programa de un tercero. Como si
quisiera arrancara un reproductor. Entonces yo creo un Process e indico el
nombre del ejecutable y los argumentos y a continuación sólo ejecuto
proceso.Start y luego proceso.WaitForExit. Gracias
Aitdx


"RFOG" wrote:

En Tue, 22 May 2007 17:27:01 +0200, AiTdX100MIl
escribió:

> Muchas gracias por contestar. Lo siento pero no entiendo a que te
> refieres con
>
> "La mejor forma es que puedas enviarles un mensaje (un simple "volatile
> bool" compartido serviría) para que ellos pudieran salir solos sin
> necesidad de darle un susto al .NET ni al recolector de basura."
>
> ¿Cómo puedo hacer esto? Yo quiero matarles al salir de la aplicación y no
> dejarles actuar hasta que terminen

Si los procesos a los que aluden son clases o métodos propios (y no
ejecutables de terceros), puedes crearte una variable miembro (o un
delegado si son clases independientes) de la siguiente forma:

class hilogen
{
private volatile bool terminar;

public hilogen() {terminar=false;}

puiblic proceso()
{
for(;;)
{
// hacer cosas
if(terminar)
break;
}
}

Y en cualquier otro lado, en la aplicación:

terminar=true;


Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> El que dé rosas de comer al burro, cobrará con un rebuzno.

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