2015-08-14 13 views
0

Я использую внешний файл exe в своем коде C#. , пожалуйста, проверьте ниже код. Этот код я просто нашел на веб-сайте.Убить или завершить рабочий процесс

string str = @"C:\joseph_Test\external_vendor.exe"; 

Process myprocess = new Process(); 
myprocess.StartInfo.FileName = str; 
myprocess.Start(); 

Я проверил этот код работает, и никаких проблем, но следующий тест мне нужно использовать другой другой тип внешнего файла EXE. , и я знаю, что предыдущий «мой процесс» все еще жив. даже перезапустить программу, мой процесс все еще жив. Итак, я ищу в Интернете, как убивать или прекращать существующий процесс. странно, что мой процесс никогда не прерывался.

Во-первых, я попробовал код ниже, но процесс все еще жив.

myprocess.WaitForExit(); 
myprocess.Close(); 

Я использовал ссылку ниже, но она по-прежнему не убита.

https://social.msdn.microsoft.com/Forums/vstudio/en-US/50ecbcf2-d2d3-4f21-9775-5b8be1bd4346/how-to-terminate-a-process-in-c?forum=csharpgeneral

Кроме того, не завершаться ниже способом.

Kill some processes by .exe file name

Я подозреваю, что этот исполняемый файл, сделанный продавцом, так это произойдет ущерб. Но теория - это экземпляр процесса C#, поэтому я считаю, что C# может прекратить или убить этот процесс.

+0

Если вы создаете процесс, вы можете назначить его объекту 'Job', а затем завершить задание. Задание также приведет к автоматическому завершению процесса, если ваш процесс завершится с ошибкой или завершится. – Mitch

+0

Если [kill process] (http://stackoverflow.com/questions/3345363/kill-some-processes-by-exe-file-name), который вы связали, не может остановить процесс (также вероятно, t убить его с помощью диспетчера задач), это означает, что вам нужно выяснить, что произойдет (вам, вероятно, нужно будет найти кого-то с использованием отладки Win32 для отслеживания этого). С количеством информации, которую вы предоставили, связанный вопрос, который вы нашли * должен * быть ответом (и я не уверен, какая дополнительная информация может сделать этот пост не дублирующимся). –

+0

Я думаю, что комментарий Алексея правильный. Для этого мне нужно выполнить собственную отладку Win32. другой ответ также не мог убить процесс. Спасибо, в любом случае. ~~~ –

ответ

0

Используя процесс, как вы создали:

Process myprocess = new Process(); 
myprocess.StartInfo.FileName = @"C:\joseph_Test\external_vendor.exe"; 
myprocess.Start(); 

В вашем призыве убить процесс по имени, вы можете сначала убедить его будет найдены не жесткое кодирование его имени, но вместо того, чтобы с помощью:

foreach (var process in Process.GetProcessesByName(myprocess.ProcessName)) 
{ 
    process.Kill(); 
} 

Вы также можете использовать ссылку на процесс в случае, когда приложение запускается рядом с вашей проблемой, и все еще работает после выхода приложения.

Смежные вопросы