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