«Изящно» убивает процесс - PullRequest
21 голосов
/ 05 августа 2010

Сейчас я использую Process.Kill (), чтобы убить процесс.Есть ли способ, вместо того, чтобы просто убить его немедленно, чтобы я мог отправить сообщение процессу, инструктируя его закрыть, чтобы он мог изящно очистить и завершить работу.По сути, я ищу эквивалент для простого щелчка по красному значку X в верхнем правом углу, который, как я полагаю, отправляет сообщение приложению с просьбой закрыть его.

Ответы [ 3 ]

31 голосов
/ 05 августа 2010

Если процесс имеет интерфейс Windows (как вы видите, красный «X»), вы можете попробовать Process.CloseMainWindow(). Если это не удалось, вы можете вернуться к Process.Kill().

5 голосов
/ 05 августа 2010

Убийство не может быть изящным, возможно, вы можете просигнализировать процесс совершения самоубийства.Для сигнализации у вас есть много вариантов.

  • SendMessage
  • NamedPipes
  • Named Mutex
  • Сокеты
3 голосов
/ 05 августа 2010

Это будет зависеть от процесса, который вы убиваете.Как указано на соответствующей странице для Process.Kill, «Kill - единственный способ завершить процессы, не имеющие графических интерфейсов».Если есть графическое окно, тогда идите с ответом по lc выше;Process.CloseMainWindow действует как красный X, на который вы ссылались.

...