Manohar_manu Ответов: 1

Как убить процесс без того, чтобы процесс вышел


Привет, я получаю ошибку типа "не могу обработать запрос, потому что процесс (2808) вышел"

мой код таков

try
                {
                    Process[] open_procs = Process.GetProcessesByName("WINWORD");
                    if (open_procs.Length > 0)
                    {
                        foreach (var proc in open_procs)
                        {

                            if (!proc.HasExited)
                            {
                                // Discard cached information about the process.
                                Thread.Sleep(5000);
                                proc.Kill();
                            }
                            else
                            {
                                break;
                            }
                        }
                    }

                }
                catch (Exception ex)
                {
                    using (StreamWriter w = File.AppendText(@"C:\\Error.txt"))
                    {
                        w.WriteLine("Error occured on " + DateTime.Now.ToString() + "\t" + " In Process , Error Description \n " + ex.ToString());
                    }
                }



может ли кто-нибудь увидеть эту проблему

Nicholas Marty

Может ли быть так, что во время вашей "нити.Сон" называют процесс завершенным сам по себе?

agent_kruger

вы получаете проблему в "процессе.Убивать();"

ZurdoDev

Где же происходит ошибка?

Sergey Alexandrovich Kryukov

Разве вы не видите, что ваша нить.Сон(5000) ожидание неизвестно чего и убийство процесса-это уже большой недостаток? Вся эта идея может быть неправильной, но сначала вы должны объяснить ее.
Обычно процессы не должны быть убиты, в худшем случае они должны получить сигнал о завершении и выходе сами по себе. Убийство - это признак нерешенной проблемы, решенной в экстренном стиле.
—СА

1 Ответов

Рейтинг:
0

Member 14183163

Process[]  runingProcess= Process.GetProcesses();
             for (inti=0; i<runingProcess.Length; i++)
            { 
                 // compare equivalent process by their name
                 if(runingProcess[i].ProcessName=="mspaint")
                {
                     // kill  running process
                    runingProcess[i].Kill();
                }