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

时间:2012-04-13 08:14:34

标签: c# visual-studio-debugging

当我关闭用C#编写的表单时,

Visual Studio Debug不会停止。当我关闭表单时,如何停止调试过程。我在表单结束事件中添加了Application.Exit()方法,但它没有用。

谢谢。

4 个答案:

答案 0 :(得分:6)

here

尝试此操作
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(...);

你可以看到怎么样?来自here

答案 1 :(得分:1)

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

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

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

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

  • 首先转到'Form1.cs [Design]'标签
  • 导航至“属性”框
  • 点击'活动'
  • 找到'FormClosing'并双击

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

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