我想我最近读过某个地方(甚至可能已经在SO上但是我找不到问题),在调试会话中,在VS中按停止只会杀死进程并且不会发生GC.但是,关闭应用程序窗口通常会按预期执行GC.
它是否正确?
此外,在任务管理器中杀死(非调试)进程时会发生什么 - GC是否仍在清理?
如果您终止进程,操作系统将清理进程的内存,但.NET运行时内不会发生GC,也不会运行终结器.
编辑:(以上只有在你杀死进程时才是正确的,而不是你使用"结束任务")
如果发送"结束任务",它将向程序发送相应的WM_CLOSE窗口消息,并且不会立即终止进程,并且.NET可以正常关闭.
编辑:(又一个附录)
如果你停止调试,它大致相当于TerminateProcess()
,它将立即关闭进程.