为什么应用程序退出时 Visual Studio 不会退出调试器?

3

我正在试图弄清楚项目中发生了什么变化,导致应用程序在我关闭正在调试的应用程序时无法退出调试器。我也注意到未处理的异常不再调用未处理的异常处理程序,我不确定它是否相关。


请告诉我们这是什么类型的应用程序(Web 应用程序、SharePoint、桌面应用程序或其他)。 - Lukasz M
3个回答

12

这可能是因为其他线程没有设置为后台线程,导致应用程序无法退出。后台线程会在应用程序退出时终止,而前台线程会保持应用程序的其余部分运行直到它们完成。

一种查找负责的线程的方法是使用调试器,具体步骤如下:

  • 在调试器中运行您的应用程序
  • “退出”您的应用程序。
  • 等待应用程序应该已经退出但尚未退出
  • 使用“暂停”按钮打断应用程序
  • 打开“线程”调试窗口
  • 在此窗口中查看任何线程。很有可能会显示一个或几个线程。通过窗口中的信息尝试识别它们。
  • 可能还有助于打开“堆栈”调试窗口,然后依次双击“线程”窗口中的每个线程,并查看“堆栈”窗口的内容。您可能能够看到卡住的线程正在尝试做什么。

7

当所有线程退出时,调试器将退出。您可能创建了一个额外的线程并且没有采取任何措施终止它。

如果未处理的异常发生在另一个线程上,则可能解释为什么无法捕获它们:您将无法在主线程上看到它们。


2

很有可能应用程序并没有真正终止。您是否运行了其他线程?只有所有前台线程都终止后,应用程序才会关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接