Які переваги має Закінчувальне завдання над закінченням процесу?


9

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

Зображення для завершення завдання:

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

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

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

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

Під час вивчення процесів зауважте, що хоча програми мають основний процес, одна програма може запустити кілька процесів. Як правило, ці процеси залежать від основного процесу застосування та припиняються, коли ви припиняєте основний процес застосування або використовуєте Кінцеву задачу. Через це, як правило, ви хочете припинити основний процес заявки або сам додаток, а не залежні процеси.

Вони кажуть, що віддають перевагу "Закінчити завдання", оскільки процес зупиняється, коли я зупиняю додаток. Але я взагалі не розумію їх логіки, чому б просто не зупинити процес замість цього?

Які переваги Ending Taskмає над Ending Process?

Відповіді:


13

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

Якщо процес заморожений або іншим чином не обробляє віконні повідомлення, які він отримує, то, звичайно, ні Кінцева задача, ні кнопка Закрити не можуть працювати. У таких випадках Windows зазвичай просить вас припинити програму насильно, але лише після надання програмі достатнього часу для відповіді.

Тим часом, кнопка " Закінчити процес " не стосується завдань чи вікон - вона викликає TerminateProcess()функцію, і Windows негайно знищує процес, не повідомляючи про це чи даючи йому можливість очистити.

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

Дивись також:


2
І тому End Task не працює для заморожених програм, правда?
Даніель Бек

2

Інші два відповіді чудово пояснюють, в чому полягає різниця в сенсі того, що відбувається, але просто для того, щоб зрозуміти , як вони відрізняються з точки зору того, як це відбувається, перший говорить програмі закрити, а другий говорить Windows вбити Програма.

Як аналогія, це як різниця між тим, щоб попросити когось зібрати їхні речі та вийти з кімнати, і сказати викрадачеві негайно та насильно вигнати їх.


1

Щоб уточнити: End Task спробує закрити додаток граціозно. Якщо його повісити, то це дасть вам можливість "закінчити зараз". Це дає вам дві переваги над вбивством процесу (який просто жорстока сила знищує):

  1. дозволяє відновити аварійне завершення для додатків, які зареєструвались у Windows Vista (та новіших версіях) Короткий опис MSDN
  2. дозволяє надсилати звіт про помилку

-7

Це просто розбіжність у термінології. Ймовірно, служба технічної підтримки Microsoft із західного узбережжя каже завдання, тоді як східне узбережжя використовує технічно правильний процес.

Технічно це все ще припиняє процес. Завдання, ймовірно, обгортка процесу, що показує вікно? Довідка менеджера завдань також не визначає.


3
Термін « завдання » є правильною; воно має інше значення, ніж «процес».
користувач1686
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.