Какие преимущества имеет конечное задание перед конечным процессом?

9

Из того, что я знаю, каждый раз, когда мы хотим остановить приложение (или замороженное приложение), мы запускаем TaskManager, выбираем приложение Go to Processи завершаем процесс. «Завершающий процесс» предпочтительнее «Завершающего задания» (иногда «Завершающее задание» все равно не работает).

Изображение для End Task:

введите описание изображения здесь

Изображение для завершения процесса:

введите описание изображения здесь

Однако http://technet.microsoft.com/en-us/library/bb726964.aspx :

При изучении процессов обратите внимание, что хотя приложения имеют основной процесс, одно приложение может запускать несколько процессов. Как правило, эти процессы зависят от основного процесса приложения и останавливаются, когда вы завершаете основной процесс приложения или используете End Task. Из-за этого вы обычно хотите завершить основной процесс приложения или само приложение, а не зависимые процессы.

Они говорят, что предпочтительнее «Завершить задачу», потому что процесс останавливается, когда я останавливаю приложение. Но я совсем не понимаю их логику. Почему бы просто не остановить процесс?

Какие преимущества Ending Taskимеет по сравнению с Ending Process?

Pacerier
источник

Ответы:

13

Для программ, имеющих хотя бы одно окно, « End Task» делает то же самое, что и нажатие кнопки X«Закрыть» - оно отправляет WM_CLOSEсообщение этому окну с просьбой его закрыть. (Для консольных окон аналогичен CTRL_CLOSE_EVENT.) Программа может предложить пользователю сохранить изменения или выполнить различные задачи очистки. Если процесс соответствует требованиям, диспетчер задач ждет несколько секунд и продолжает процесс, если он все еще выполняется.

Если процесс заморожен или иным образом не обрабатывает принимаемые им сообщения окна, то, конечно, ни кнопка « Завершить задачу», ни кнопка «Закрыть» не могут работать. В таких случаях Windows обычно просит вас принудительно завершить программу, но только после того, как она предоставит программе достаточно времени для ответа.

Между тем кнопка « Завершить процесс» не связана с задачами или окнами - она ​​вызывает TerminateProcess()функцию, и Windows немедленно уничтожает процесс, не уведомляя его и не предоставляя ему возможности для очистки.

(Такие ресурсы, как память, освобождаются автоматически после завершения процесса; однако, если программа создала их, могут остаться различные временные файлы, и, конечно, существует риск повреждения данных, если процесс завершается в процессе сохранения данных.)

Смотрите также:

user1686
источник
2
И именно поэтому End Task не работает для замороженных программ, верно?
Даниэль Бек
2

Два других ответа прекрасно объясняют, в чем разница с точки зрения того, что происходит, но просто для того, чтобы показать, как они различаются с точки зрения того, как это происходит, первый говорит программе закрыться, а второй говорит Windows убить программа.

Как аналогия, это похоже на разницу между тем, чтобы попросить кого-нибудь собрать свои вещи и покинуть комнату, и сказать вышибалу, чтобы тот немедленно и насильно вытолкнул их.

Synetech
источник
1

Для уточнения: End Task попытается изящно закрыть приложение. Если он завис, он даст вам возможность «закончить сейчас». Это дает вам два преимущества по сравнению с уничтожением процесса (который просто перебивает его):

  1. включает восстановление после сбоя для приложений, зарегистрированных в Windows Vista (и выше) Краткое описание MSDN
  2. позволяет отправить сообщение об ошибке
Марк Соул
источник
-7

Это просто несоответствие в терминологии. Вероятно, справочная служба Microsoft на западном побережье говорит, что задача, а на восточном побережье используется технически правильный процесс.

Технически это все еще завершает процесс. Задача - это, вероятно, оболочка процесса, показывающего окно? Помощь диспетчера задач тоже не определяет.

Заб
источник
3
Термин « задача » является правильным; это имеет другое значение от "процесса".
user1686