C # остановить процесс

#c# #process

#c# #процесс

Вопрос:

Я хотел бы иметь возможность остановить процесс typeperf, который я запустил на c # для удаленных машин. Что я получил до сих пор, так это:

 ProcessStartInfo proc = new ProcessStartInfo();

public void startLogs()
{
    for (int i = 0; i < remote_machines_num; i  )
    {
        string line = " -s "   machines[i] 
              " -si 5 "\Processor(_Total)\% Processor Time" -o C:\logs\" 
              machines[i]   ".csv";

        proc.FileName = @"C:WINDOWSSYSTEM32typeperf.exe";
        proc.Arguments = line;
        Process.Start(proc);
    }
}
  

это действительно запускает все мониторы — но я хотел бы написать функцию, которая остановит мониторинг и закроет все окна — как я могу это сделать? Спасибо!

Комментарии:

1. Просто чтобы избежать ошибок, при которых аргументы непреднамеренно копируются из одного запуска в следующий, я бы создал экземпляр new ProcessStartInfo внутри цикла, а не вне его. Это также позволяет использовать новый, более читаемый синтаксис инициализатора объекта для загрузки!

Ответ №1:

Получить ссылку на запущенный процесс и Kill() его.

 var theRunningProc = Process.Start(proc);
theRunningProc.Kill();
  

Комментарии:

1. могу ли я преобразовать процессы в массив? если да — как?

2. @aaaa — A List<Process> вероятно, было бы лучше. Создайте экземпляр пустого процесса и добавьте в него каждый процесс.

Ответ №2:

Вы ищете это

 http://alperguc.blogspot.com/2008/11/c-process-processgetprocessesbyname.html
  

Комментарии:

1. Было бы НАМНОГО лучше, если бы вы обобщили то, на что вы ссылаетесь. Возможно, даже удалить саму ссылку. Простая ссылка на страницу без включения чего-либо еще никому не поможет.