Jakie zalety ma Zakończenie zadania w porównaniu z Zakończeniem?

9

Z tego co wiem, za każdym razem, gdy chcemy zatrzymać aplikację (lub zamrożoną aplikację), przejdziemy do Menedżera zadań, wybierz aplikację Go to Processi zakończymy proces. Preferowany jest „Ending Process” zamiast „Ending Task” (czasem „ending task” i tak nie działa).

Obraz do zadania końcowego:

wprowadź opis zdjęcia tutaj

Obraz do zakończenia procesu:

wprowadź opis zdjęcia tutaj

Jednak http://technet.microsoft.com/en-us/library/bb726964.aspx :

Podczas badania procesów zauważ, że chociaż aplikacje mają proces główny, jedna aplikacja może uruchomić wiele procesów. Zasadniczo procesy te zależą od głównego procesu aplikacji i są zatrzymywane po zakończeniu głównego procesu aplikacji lub użyciu zadania końcowego. Z tego powodu zazwyczaj chcesz zakończyć główny proces aplikacji lub samą aplikację, a nie procesy zależne.

Mówią, że preferowane jest „Zakończ zadanie”, ponieważ proces jest zatrzymywany, gdy zatrzymuję aplikację. Ale w ogóle nie rozumiem ich logiki. Dlaczego zamiast tego po prostu zatrzymać proces?

Jakie zalety Ending Taskma ponad Ending Process?

Pacerier
źródło

Odpowiedzi:

13

W przypadku programów mających co najmniej jedno okno polecenie Zakończ zadanie robi to samo, co kliknięcie przycisku X„Zamknij” - wysyła WM_CLOSEkomunikat do tego okna, prosząc o dobre zamknięcie. (W przypadku okien konsoli odpowiednikiem jest CTRL_CLOSE_EVENT.) Program może poprosić użytkownika o zapisanie zmian lub wykonanie różnych zadań czyszczenia. Jeśli proces jest zgodny, Menedżer zadań czeka kilka sekund i kontynuuje proces, jeśli nadal działa.

Jeśli proces jest zawieszony lub w inny sposób nie obsługuje otrzymywanych komunikatów okna, wówczas oczywiście nie może zakończyć zadania ani przycisku Zamknij. W takich przypadkach system Windows zazwyczaj prosi o zamknięcie programu w sposób wymuszony, ale dopiero po zapewnieniu programowi wystarczającej ilości czasu na odpowiedź.

Tymczasem przycisk Zakończ proces nie zajmuje się zadaniami ani oknami - wywołuje TerminateProcess()funkcję, a system Windows natychmiast niszczy proces, nie powiadamiając go ani nie dając szansy na wyczyszczenie.

(Zasoby takie jak pamięć są zwalniane automatycznie po zakończeniu procesu; mogą jednak pozostać różne pliki tymczasowe, jeśli program je utworzył, i oczywiście istnieje ryzyko uszkodzenia danych, jeśli proces zostanie zakończony w trakcie zapisywania danych.)

Zobacz też:

użytkownik1686
źródło
2
I dlatego End Task nie działa dla zamrożonych programów, prawda?
Daniel Beck
2

Pozostałe dwie odpowiedzi dobrze wyjaśniają, na czym polega różnica pod względem tego, co się dzieje, ale aby spojrzeć z perspektywy na to, jak różnią się pod względem tego, co się dzieje, ta pierwsza nakazuje programowi zamknięcie, a druga nakazuje Windowsowi zabić program.

Analogicznie przypomina to różnicę między proszeniem kogoś o zebranie rzeczy i wyjściem z pokoju a poleceniem bramkarzowi, aby natychmiast i siłą go wyrzucił.

Synetech
źródło
1

Aby rozwinąć: Zakończ zadanie spróbuje zamknąć aplikację z wdziękiem. Jeśli się zawiesi, da ci opcję „skończyć teraz”. Daje to dwie korzyści w porównaniu z zabiciem tego procesu (który po prostu usuwa brutalną siłę):

  1. umożliwia odzyskiwanie po awarii dla aplikacji zarejestrowanych w systemie Windows Vista (i nowszych) Krótki opis MSDN
  2. pozwala wysłać raport o błędzie
Mark Sowul
źródło
-7

To tylko rozbieżność terminologiczna. Prawdopodobnie zachodnie centrum pomocy technicznej Microsoft powie zadanie, podczas gdy wschodnie wybrzeże stosuje technicznie poprawny proces.

Technicznie nadal kończy proces. Zadanie to prawdopodobnie opakowanie procesu pokazujące okno? Pomoc menedżera zadań również nie definiuje.

ZaB
źródło
3
Termin „ zadaniejest poprawny; ma inne znaczenie niż „proces”.
user1686,