在Visual Studio环境中,我在调试时注意到程序中有两种不同的结束行为。当我在程序仍在运行时按下Stop Debugging按钮时,我遇到的行为与我实际关闭表单时的行为不同,点击右上角的红色X也会停止调试。我一直认为他们做了同样的事情,但对于我的计划,我遇到了不同的最终条件。谁能告诉我这两种结束调试的方法是否真的有区别。
答案 0 :(得分:4)
当然,大的区别。单击窗口的“关闭”按钮可启动应用程序的受控关闭,从触发的FormClosing事件开始。如果它是应用程序的主窗口,Application.Run()在Main()方法中返回,则Main()方法返回并结束UI线程。如果没有剩余的非后台线程,则CLR以受控方式关闭,运行所有剩余的终结器,卸载AppDomain并结束该过程。
使用调试器的Stop Debugging命令是一个即时的粗鲁过程中止。所有运行中都没有否代码,无论是程序还是CLR。巴姆!结束了。
答案 1 :(得分:1)
关闭表单将跟随任何或所有结束事件。停止调试器会立即终止程序。