
Насколько я знаю, каждый раз, когда мы хотим остановить приложение (или зависшее приложение), мы переходим в TaskManager, выбираем приложение Go to Process
и завершаем процесс. «Завершение процесса» предпочтительнее, чем «Завершение задачи» (иногда «завершение задачи» все равно не работает).
Изображение для завершения задачи:
Изображение для конечного процесса:
Однако,http://technet.microsoft.com/en-us/library/bb726964.aspx:
При изучении процессов обратите внимание, что хотя у приложений есть основной процесс, одно приложение может запускать несколько процессов. Обычно эти процессы зависят от основного процесса приложения и останавливаются, когда вы завершаете основной процесс приложения или используете команду End Task. Из-за этого вам обычно нужно завершить основной процесс приложения или само приложение, а не зависимые процессы.
Они говорят, что это предпочтительнее, чем "Завершить задачу", потому что процесс останавливается, когда я останавливаю приложение. Но я вообще не понимаю их логику. Почему бы просто не остановить процесс вместо этого?
Какие преимущества Ending Task
имеет по сравнению с Ending Process
?
решение1
Для программ, имеющих хотя бы одно окно,Завершить задачуделает то же самое, что и нажатие Xкнопки «Закрыть» — отправляет WM_CLOSE
сообщение в это окно с просьбой вежливо закрыть его. (Для консольных окон эквивалентом являетсяCTRL_CLOSE_EVENT
.) Программа может предложить пользователю сохранить изменения или выполнить различные задачи очистки. Если процесс соответствует требованиям, диспетчер задач ждет несколько секунд и завершает процесс, если он все еще выполняется.
Если процесс завис или иным образом не обрабатывает полученные им оконные сообщения, то, конечно, ни то, ни другоеЗавершить задачуни кнопка Закрыть не может работать. В таких случаях Windows обычно просит вас принудительно завершить программу, но только после того, как программа получит достаточно времени для ответа.
Между тем,Завершить процесскнопка не связана с задачами или окнами — она вызывает функцию, TerminateProcess()
и Windows немедленно уничтожает процесс, не уведомляя его и не давая ему возможности очиститься.
(Ресурсы, такие как память, автоматически освобождаются после завершения процесса; однако могут остаться различные временные файлы, если программа их создала, и, конечно, существует риск повреждения данных, если процесс будет завершен во время сохранения данных.)
Смотрите также:
- Журнал Visual Studio.Аккуратно закройте приложение
решение2
Остальные два ответа прекрасно объясняют, в чем разница с точки зрениячтопроисходит, но просто чтобы представить, как они отличаются с точки зрениякакслучается так, что первый сообщает программе о необходимости закрыться, а второй сообщает Windows о необходимостиубийствопрограмма.
Если провести аналогию, это похоже на разницу между просьбой к кому-то собрать вещи и выйти из комнаты и требованием к вышибале немедленно и силой вытолкать его.
решение3
Если пояснить: End Task попытается закрыть приложение корректно. Если оно зависло, то вам будет предложено "завершить сейчас". Это дает вам два преимущества по сравнению с завершением процесса (который просто уничтожается методом грубой силы):
- обеспечивает восстановление после сбоя для приложений, зарегистрированных в Windows Vista (и выше)Краткое описание MSDN
- позволяет отправлять отчет об ошибке
решение4
Это просто несоответствие в терминологии. Вероятно, служба поддержки Microsoft на западном побережье говорит о задаче, тогда как на восточном побережье используется технически правильный процесс.
Технически он все равно завершает процесс. Задача, вероятно, является оберткой процесса, показывающей окно? Справка диспетчера задач тоже не определяет.