Que vantagens o Ending Task tem sobre o Ending Process?

9

Pelo que sei, sempre que quisermos parar um aplicativo (ou um aplicativo congelado), iremos para o TaskManager, selecionaremos o aplicativo Go to Processe encerraremos o processo. "Finalizar processo" é preferível a "Finalizar tarefa" (às vezes "finalizar tarefa" não funciona de qualquer maneira).

Imagem para Finalizar tarefa:

insira a descrição da imagem aqui

Imagem para Processo Final:

insira a descrição da imagem aqui

No entanto, http://technet.microsoft.com/en-us/library/bb726964.aspx :

Ao examinar processos, observe que, embora os aplicativos tenham um processo principal, um único aplicativo pode iniciar vários processos. Geralmente, esses processos dependem do processo principal do aplicativo e são interrompidos quando você finaliza o processo principal do aplicativo ou usa Finalizar tarefa. Por esse motivo, geralmente você deseja encerrar o processo principal do aplicativo ou o próprio aplicativo, em vez dos processos dependentes.

Eles estão dizendo que é preferível "Finalizar tarefa" porque o processo é interrompido quando eu paro o aplicativo. Mas eu não entendo a lógica deles. Por que não simplesmente interromper o processo?

Que vantagens Ending Tasktem sobre Ending Process?

Pacerier
fonte

Respostas:

13

Para programas com pelo menos uma janela, Finalizar tarefa faz o mesmo que clicar no botão X"Fechar" - ele envia a WM_CLOSEmensagem para essa janela, solicitando o fechamento adequado. (Para janelas do console, o equivalente é CTRL_CLOSE_EVENT.) O programa pode solicitar ao usuário que salve as alterações ou faça várias tarefas de limpeza. Se o processo estiver em conformidade, o Gerenciador de tarefas aguardará alguns segundos e continuará com o processo, se ainda estiver em execução.

Se o processo estiver congelado ou não estiver manipulando as mensagens da janela que ele recebe, é claro que nem a tarefa Finalizar nem o botão Fechar podem funcionar. Nesses casos, o Windows normalmente solicita que você termine o programa com força, mas somente depois de dar ao programa tempo suficiente para responder.

Enquanto isso, o botão Finalizar processo não se preocupa com tarefas ou janelas - ele chama a TerminateProcess()função e o Windows destrói o processo imediatamente, sem notificá-lo ou com qualquer chance de limpeza.

(Recursos como memória são liberados automaticamente após o término do processo; no entanto, pode haver vários arquivos temporários se o programa os tiver criado e, é claro, há o risco de corrupção de dados se o processo for encerrado no meio da gravação de dados.)

Veja também:

user1686
fonte
2
E é por isso que o End Task não funciona para programas congelados, certo?
Daniel Beck
2

As outras duas respostas explicam qual é a diferença em termos do que acontece, mas apenas para colocar em perspectiva como elas diferem em termos de como isso acontece, a primeira diz ao programa para fechar enquanto a segunda diz ao Windows para matar o programa.

Como analogia, é como a diferença entre pedir a alguém para recolher suas coisas e sair da sala e dizer a um segurança para empurrá-la imediatamente e à força.

Synetech
fonte
1

Para elaborar: Finalizar tarefa tentará fechar o aplicativo normalmente. Se estiver suspenso, você terá a opção de "terminar agora". Isso oferece dois benefícios em matar o processo (que apenas a força bruta o apaga):

  1. permite recuperação de falhas para aplicativos registrados no Windows Vista (e superior) Breve descrição do MSDN
  2. permite enviar um relatório de erro
Mark Sowul
fonte
-7

É apenas uma discrepância na terminologia. Provavelmente a costa oeste do suporte técnico da Microsoft diz que é tarefa, enquanto a costa leste usa o processo tecnicamente correto.

Tecnicamente, ele ainda encerra o processo. Tarefa é provavelmente um invólucro do processo mostrando uma janela? A ajuda do gerenciador de tarefas também não define.

ZaB
fonte
3
O termo " tarefa " está correto; tem um significado diferente de "processo".
usar o seguinte comando