据我所知,每次我们想要停止某个应用程序(或冻结的应用程序)时,我们都会进入 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
这只是术语上的差异。可能微软帮助台西海岸说的是任务,而东海岸使用技术上正确的流程。
从技术上讲,它仍然会终止进程。任务可能是显示窗口的进程的包装器?任务管理器的帮助也没有定义。