在 Visual Studio 中关闭窗体后调试未停止

本文关键字:调试 窗体 Visual Studio | 更新日期: 2023-09-27 18:30:54

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

谢谢。

在 Visual Studio 中关闭窗体后调试未停止

从这里试试这个

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 [设计]"选项卡
  • 导航到"属性"框
  • 点击"活动"
  • 找到"表单关闭"并双击它

如果您遇到相同的问题,您现在应该能够看到至少有 1 个对该事件的引用。 现在,当您关闭窗体时,它也应该停止调试器。

我之所以提出这个问题,是因为当调试的应用程序关闭时,VS 没有停止。

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

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

我知道这不是您可能期望的解决方案,但是找出应用程序无法正确退出或仍然保持后台进程活动的原因是一个非常棘手的主题。活动线程下拉列表是恕我直言的最佳位置。

另一种可能性是,您的进程在未正确处理的异常中运行。我曾经在自建对话框中显示异常消息,但忘记在一种情况下显示创建的窗口。因此,程序遇到了异常,创建了窗口,但没有显示任何迹象......因此,即使我关闭了应用程序,该过程也继续运行。