在Visual Studio中关闭表单后调试不会停止

当我关闭用C#编写的表单时,Visual Studio Debug不会停止。 当我关闭表单时,如何停止调试过程。 我在表单关闭事件中添加了Application.Exit()方法,但它不起作用。

谢谢。

从这里试试这个

If (System.Windows.Forms.Application.MessageLoop) { // Use this since we are a WinForms app System.Windows.Forms.Application.Exit() } Else { // Use this since we are a console app System.Environment.Exit(1) } 

编辑:

如果有运行infinite线程,那么

 Thread myThread = new Thread(...); myThread.IsBackground = true; //set your running thread to background myThread.Start(...); 

你可以看到如何? 从这里

那么这将是四年太晚了,但是,我想我会把这个发布给其他遇到这个问题的人(就像我刚刚做的那样),提前抱歉如果这是非常基本的,我对C#很新这让我有点兴奋。

我有与OP相同的问题,在我的FormClosing事件中,Application.Exit()或Environment.Exit(0)都不会结束调试器。

我找到的东西是查看我的FormClosing事件上方的引用计数,它显示’0引用’。 我刚从另一个论坛复制并粘贴了结束事件,因此没有事件处理程序来实际处理我创建/复制的事件。

解决此问题的一种简单方法(除了不复制和粘贴代码)是创建事件处理程序:

  • 首先转到’Form1.cs [Design]’选项卡
  • 导航到“属性”框
  • 点击’活动’
  • 找到’FormClosing’并双击它

如果您遇到同样的问题,现在应该可以看到至少有1个对该事件的引用。 现在当你关闭表单时,它也应该停止调试器。

另一种可能性是,您的进程在未正确处理的exception中运行。 我曾经在自建对话框中显示exception消息,但忘记在一个案例中显示创建的窗口。 所以程序遇到了exception,创建了窗口,但是没有显示出它的任何迹象……所以即使我关闭了应用程序,该过程仍然保持运行。

我找到了这个问题,因为VS在调试应用程序关闭时没有停止。

查看可能导致ide挂起的一种方法是单击暂停,然后在“调试位置”工具栏上查看仍在运行的所有线程。 对我来说,我注意到还有一个RabbitMq上下文没有被处理掉。 所以这就是我需要的线索。

在我更改了代码后,VS现在会在应用程序退出后停止调试会话。

我知道这不是你可能期望的解决方案,但是找出为什么应用程序没有正常退出或仍然保持后台进程活着是一个非常棘手的主题。 活动线程下拉是看起来最好的地方。