"Изящно" убивая процесс


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

3 18

3 ответа:

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

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

  • SendMessage
  • NamedPipes
  • Именованный Мьютекс
  • сокеты

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