为什么visual studio在应用程序退出时不退出调试器?

时间:2012-01-13 20:48:53

标签: c# .net visual-studio-2010 debugging

我试图找出项目中发生的变化,现在导致应用程序在关闭我正在调试的应用程序时不退出调试器。我还注意到未处理的异常不再调用未处理的异常处理程序,我不确定它是否相关。

3 个答案:

答案 0 :(得分:10)

这可能是由于其他线程未设置为后台线程,使应用程序保持活动状态。后台线程将在应用程序执行时终止,而前台线程将使应用程序的其余部分保持活动状态,直到它们完成。

检查负责线程的一种方法是在调试器中,如下所示:

  • 在调试器中运行您的应用
  • “退出”您的应用。
  • 等到应用已退出但尚未
  • 使用“暂停”按钮
  • 进入应用程序
  • 打开“线程”调试窗口
  • 在此窗口中查找任何主题。有可能会有一个或几个线程显示。看看您是否可以通过窗口中的信息确定它们是什么。
  • 打开“堆栈”调试窗口,然后依次双击“线程”窗口中的每个线程,查看“堆栈”窗口的内容也可能有所帮助。您可能能够看到任何卡住的线程正在尝试做什么。

答案 1 :(得分:6)

当所有线程退出时,调试器退出。你可能已经创建了一个额外的线程,并没有做任何事情来终止它。

这可以解释未处理的未处理异常:如果它们发生在不同的线程上,您将无法在主线程上看到它们。

答案 2 :(得分:2)

大多数情况下,应用程序实际上并没有终止。你还有其他线程在运行吗?在所有前台线程终止之前,应用程序不会关闭。