Terminar un proceso usando Kill

07/06/2004 - 17:04 por Alexandra | Informe spam
Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que termine
una aplicación, pero cuando lo utilizo se inestabiliza el
sistema y se cierran casi todas las aplicaciones que estoy
corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.

Preguntas similare

Leer las respuestas

#6 Anonimo
09/06/2004 - 09:28 | Informe spam
Podría usted realizar un mayor aporte d ecódigo ?


Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que


termine
una aplicación, pero cuando lo utilizo se inestabiliza


el
sistema y se cierran casi todas las aplicaciones que


estoy
corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.
.

Respuesta Responder a este mensaje
#7 Alexandra
09/06/2004 - 18:41 | Informe spam
pero Hombre! que supones mucho... pero supones mal, porque
ya he hecho pruebas con el debugger, obvio.. pero no me
tira ninguna excepción.. al contrario, cuando lo corro
paso a paso funciona bien.
Te paso el código completito, tal cual se rompe... a ver
si me puedes ayudar (creo que el problema surge cuando lo
mata con Kill, y lo intenta volver a levantar! )

Salut!

static void Main(string[] args)
{
//
// TODO: Add code to start
application here

cScheduler myScheduler = new
cScheduler();


Process[] runningProcesses =
Process.GetProcessesByName("rtrobo");

foreach (Process otherInstance in
runningProcesses)
{

if
(otherInstance.ProcessName == "rtrobo")
{
if
(otherInstance.CloseMainWindow()==false)
{

otherInstance.EnableRaisingEvents=true;

otherInstance.Kill();

}
}

}
//

Process myProcess =new Process();


myProcess.StartInfo.FileName="rtrobo.exe";
myProcess.StartInfo.Arguments
= "Main /project \"C:\\Rational\\Rational
Test\\prueba\\prueba.rsp\" /play /nolog /close";

try
{
myProcess.Start();

//wait until deadtime
specified
int deadTimeMilisec =
300000;
myProcess.WaitForExit
(deadTimeMilisec );



}
catch(Exception e)

{

}
finally
{

}
}
}
Para probarlo dime que


contiene "configElement.ProcessName"

Javier Ros Moreno.

escribió en el


mensaje
news:19b6d01c44d6a$ac0aaf30$
Javier, he probado lo que me pasaste,pero no ha dado
resultado,
Lo complicado del código se debe a que ya he PROBADO
todas las combinaciones posibles!!!! y se me sigue
colgando el sistema.. de las más prolijas a las más
desprolijas...
les paso el codigo completo, con tus modificaciones
correctamente propuestas:
Process[] runningProcesses = Process.GetProcessesByName
(configElement.ProcessName);

foreach (Process otherInstance in runningProcesses)
{
Process.GetProcessById(instance.Id);
if (otherInstance.ProcessName ==


configElement.ProcessName)
{
if (otherInstance.CloseMainWindow()==false)
{
otherInstance.EnableRaisingEvents=true;
otherInstance.Kill();
}
}
Saludos!
P.D: lo que sucede es que se cierran todas las
aplicaciones que están corriendo incluida la que llama las
sentencias anteriores.

Mejor todavia, y quitamos trabajo al recolector de




basura:

runningProcesses = AlgoQueNoSeLoQueEs();
for (int i = 0; i < runningProcesses.Count; i++)
{
Process otherProcess = Process.GetProcessById


(runningProcesses[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Y bueno ya puestos yo lo haria así:

runningProcesses = AlgoQueNoSeLoQueEs();
foreach (Process otherProcess in runningProcesses)
{
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
otherProcess.Kill();
}

Lo de otherPrecess.Close() ... No hace falta, no?

Bueno pues eso.

Javier Ros Moreno
Aguas de Murcia.


"Javier Ros" $PAMHEREemuasa.es> escribió en el


mensaje
news:<#...
hmn!, codigo raro donde los haya.

En principio asignas a otherProcess un nuevo Process,




acto seguido
machacas lo que acabas de hacer con GetProcessById,




luego usas
runningProcesses, que no especificas que es, y tambien




usas una
variable "i" que supongo que es de un bucle. Deduzco




que tu codigo
real
es:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i >0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses




[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Con lo cual te estas cargando todos lo procesos




cargados en
runningProcesses, que si son todos los que estan




rulando en el sistema
pues ... normal que se te vaya todo, comprueba el




nombre del proceso
para ver si lo quieres matar o no.
Quedaria así:

runningProcesses = AlgoQueNoSeLoQueEs(); for (int i >0; i <
runningProcesses.Count; i++) {
Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses




[i].Id);
if (otherProcess.ProcessName == "NOMBREPROCESOACERRAR")
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();
}

Suerte.

Javier Ros Moreno
Aguas de Murcia.


"Alexandra"




escribió en el
mensaje news:18e2b01c44ca0$b6e18d90$
Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que




termine una
aplicación, pero cuando lo utilizo se inestabiliza el




sistema y se
cierran casi todas las aplicaciones que estoy




corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.






.





.

Respuesta Responder a este mensaje
#8 Alexandra
09/06/2004 - 18:43 | Informe spam
Si, te paso el siguiente: creo que el problema surge
cuando lo mata con Kill, y lo intenta volver a levantar!

Salut!

static void Main(string[] args)
{
//
// TODO: Add code to start
application here

cScheduler myScheduler = new
cScheduler();


Process[] runningProcesses =
Process.GetProcessesByName("rtrobo");

foreach (Process otherInstance in
runningProcesses)
{

if
(otherInstance.ProcessName == "rtrobo")
{
if
(otherInstance.CloseMainWindow()==false)
{

otherInstance.EnableRaisingEvents=true;

otherInstance.Kill();

}
}

}
//

Process myProcess =new Process();


myProcess.StartInfo.FileName="rtrobo.exe";
myProcess.StartInfo.Arguments
= "Main /project \"C:\\Rational\\Rational
Test\\prueba\\prueba.rsp\" /play /nolog /close";

try
{
myProcess.Start();

//wait until deadtime
specified
int deadTimeMilisec =
300000;
myProcess.WaitForExit
(deadTimeMilisec );



}
catch(Exception e)

{

}
finally
{

}
}
}

Podría usted realizar un mayor aporte d ecódigo ?


Hola, cómo están?
estoy utilizando la sentencia Kill para forzar que


termine
una aplicación, pero cuando lo utilizo se inestabiliza


el
sistema y se cierran casi todas las aplicaciones que


estoy
corriendo!!!
Alguno podría ayudarme?

Process otherProcess = new Process();
otherProcess = Process.GetProcessById(runningProcesses
[i].Id);
if (otherProcess.CloseMainWindow()==false)
{
otherProcess.Kill();
}
otherProcess.Close();

Saludos.
.



.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida