2016-03-04 3 views
0

Я работаю с консольным приложением C#, в котором я создаю процесс, и когда я убиваю этот процесс, он показывает, что процесс был убит, но процесс не останавливается, а также приложение не выходит.Приложение не выходит C#

process.StartInfo.WorkingDirectory = @"C:\Users\rajgau\Documents\logstash-2.1.1\bin"; 
process.StartInfo.FileName = "cmd.exe"; 

process.StartInfo.UseShellExecute = false; 


process.StartInfo.RedirectStandardInput = true; 
process.StartInfo.RedirectStandardError = true; 
process.StartInfo.RedirectStandardOutput = true; 

process.Start(); 

process.StandardInput.WriteLine("logstash -f logstash-filename1.conf"); 

Thread.Sleep(1000 * 10); // atleast some data get loaded 
process.StandardInput.Close(); 
Console.WriteLine("{0} is active: {1}", process.Id, !process.HasExited); 
process.Kill(); 
Console.WriteLine("{0} is active: {1}", process.Id, !process.HasExited); 

также Для выхода из консольного приложения я попытался Environment.Exit (0), но даже это не help.Kindly предложить некоторые моменты.

+0

Если logstash имеет элементы в трубопроводе, я считаю, что это будет отказываться от основной убить. A -9 может потребоваться, если вы не возражаете против потери трубопровода. –

+0

Можете ли вы помочь мне больше с -9. – luckycse

ответ

1

Вы запускаете командный процесс оболочки (cmd.exe), а затем также создаете дочерние процессы (logstash), которые также нужно убить.

Вам нужно убить дерево процесса, как это рекомендовано в ответ здесь https://stackoverflow.com/a/23845431/87464

+0

Спасибо nvuono. Это помогло мне. – luckycse