¿Qué debe hacerse si el código anterior devuelve la excepción (un proceso de 32 bits no puede acceder a los módulos de un proceso de 64 bits)?
Manish
40
Deje ".exe". De MSDN: "El nombre del proceso es un nombre
1
@AgainMe Process.Kill () envía una señal de cierre a un proceso, que detendrá su ejecución donde sea que se encuentre. Esto es diferente de una señal de interrupción en que el proceso no tendrá la oportunidad de responder y / o limpiar de la señal. No se realizará más ejecución en ese proceso, y se liberará cualquier bloqueo en los recursos utilizados por ese proceso. Environment.Exit () se realiza mediante el proceso que se está ejecutando actualmente para suicidarse con un código de éxito, que es perfectamente seguro. Process.Kill () no es tan seguro como Environment.Exit ().
jchitel
2
Sugiero el uso de LINQ: var procs = Process.GetProcesses (). Where (pr => pr.ProcessName.Contains ("Spotify"));
Leandro
2
¿Alguna opción para matar una instancia específica de un proceso? Quiero decir, Contains("Spotify"))mata todas las instancias de Spotify. Quiero matar una instancia particular de Spotify.
Banee Ishaque K
38
Mi solución es usar Process.GetProcess () para enumerar todos los procesos.
Al filtrarlos para contener los procesos que quiero, puedo ejecutar el método Process.Kill () para detenerlos:
var chromeDriverProcesses =Process.GetProcesses().Where(pr => pr.ProcessName=="chromedriver");// without '.exe'foreach(var process in chromeDriverProcesses){
process.Kill();}
Actualizar:
En caso de que si desea utilizar el asyncenfoque con algunos métodos recientes útiles de C# 8( Async Enumerables ), verifique esto:
conststring processName ="chromedriver";// without '.exe'awaitProcess.GetProcesses().Where(pr => pr.ProcessName== processName).ToAsyncEnumerable().ForEachAsync(p => p.Kill());
Nota: el uso de asyncmétodos no siempre significa que el código se ejecutará más rápido, pero al menos no perderá el tiempo de la CPU y evitará que el subproceso en primer plano se cuelgue mientras realiza las operaciones. En cualquier caso, debe pensar qué versión puede querer.
Curiosa coincidencia es que estaba buscando en este hilo una solución para matar el controlador cromado. Debe ser un problema común.
kerl
Igual que aquí. aunque eso no parece resolverlo. La consola inicial que se dispara es en realidad una instancia de chrome.exe y supongo que no desea forzar el cierre de todos ellos a menos que sea un agente de compilación / prueba
foreach(var process inProcess.GetProcessesByName("WINWORD")){// Temp is a document which you need to kill.if(process.MainWindowTitle.Contains("Temp"))
process.Kill();}
Respuestas:
Respuesta rápida:
(deje el .exe del nombre del proceso)
fuente
Contains("Spotify"))
mata todas las instancias deSpotify
. Quiero matar una instancia particular deSpotify
.Mi solución es usar Process.GetProcess () para enumerar todos los procesos.
Al filtrarlos para contener los procesos que quiero, puedo ejecutar el método Process.Kill () para detenerlos:
Actualizar:
En caso de que si desea utilizar el
async
enfoque con algunos métodos recientes útiles deC# 8
( Async Enumerables ), verifique esto:fuente
Puede usar
Process.GetProcesses()
para obtener los procesos que se están ejecutando actualmente y luegoProcess.Kill()
matar un proceso.fuente
Si tiene el ID de proceso (
PID
), puede eliminar este proceso de la siguiente manera:fuente
Puede matar una instancia específica de MS Word.
fuente
Resumen : no importa si el nombre contiene .exe, el proceso finalizará. No necesita "dejar .exe del nombre del proceso", funciona al 100%.
fuente
.Replace(".exe", "")
respuesta simple en la parte superior votada haría esto con un código mucho menos complicado e innecesario