Я пытаюсь убить процесс по идентификатору процесса, который я сохраняю при запуске процесса. Но идентификатор процесса, который я собираю, не существует, когда я пытаюсь убить процесс из кода позади.Идентификатор процесса процесса Начал с начала процесса
Это код ниже, чтобы начать процесс и получить идентификатор процесса.
private List<int> pids = new List<int>();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
pids.Clear();
Process myprocess= new Process();
myprocess.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\cmdkey.exe");
myprocess.StartInfo.Arguments = "C:\\rdp\\RemoteIn.rdp";
myprocess.Start();
pids.Add(myprocess.Id);
}
private void terminateAll()
{
//foreach (var p in pids) p.Kill();
foreach (var i in pids)
{
Process p = Process.GetProcessById(i);
p.Kill();
}
}
private void button2_Click(object sender, EventArgs e)
{
terminateAll();
}
Когда я нажимаю кнопку, чтобы завершить процесс, отображается следующая ошибка.
Есть ли способ, чтобы исправить это.
После использования кода Palani Kumar, я становлюсь ниже исключения.
форма Похоже, этот
Попробуйте сохранить объект Process в своем списке, а не только идентификатор. – Blorgbeard
Да, вместо хранения pids просто сохраните сам процесс, тогда вам даже не нужно вызывать 'Process.GetProcessById (i); ' – spender
возможный дубликат [получения PID процесса, запущенного Process.start()] (http://stackoverflow.com/questions/12892268/getting-pid-of-process-started-by-process- start) –