【问题标题】:Debug not stopping after form closing in Visual Studio在 Visual Studio 中关闭表单后调试未停止
【发布时间】:2012-04-25 14:45:17
【问题描述】:

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

谢谢。

【问题讨论】:

  • 也许一些后台处理仍在运行?您可以在关闭主窗体并检查“线程”窗口后暂停执行。
  • 关闭所有内容后,在 Visual Studio 的“调试”菜单上尝试“Break All”,看看结果如何。
  • 是的,我意识到我的一些线程仍在运行。我怎样才能停止这些线程?
  • 您是否尝试过 Application.Current.Shutdown()。
  • 应用程序类中没有当前项。为什么?我正在使用 .net framework 4 客户端配置文件。

标签: c# visual-studio-debugging


【解决方案1】:

从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

【讨论】:

  • 试试 this.close(); Application.exit() 之后
  • 如果我在 Application.Exit() 之后使用 this.Close(),它会给出 StackOverflowException。
  • 我认为您的应用程序存在无限循环,这通常是由对递归调用永远不会终止的函数的递归调用引起的
  • 我添加了一些代码检查,并让我知道它是否有效。
  • 它没有用。我将 Environment.Exit(0) 放入我的表单关闭事件,现在调试过程停止。这个方法可以吗?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    好吧,这会为时已晚四年,但是,我想我会为遇到此问题的其他人发布此问题(就像我刚刚所做的那样),如果这是非常基本的,请提前抱歉,我是新手到 C# 所以这让我有点失望。

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

    我发现的是查看我的 FormClosing 事件上方的引用计数,它显示“0 个引用”。我刚刚从另一个论坛复制并粘贴了关闭事件,因此没有事件处理程序来实际处理我创建/复制的事件。

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

    • 首先转到“Form1.cs [设计]”选项卡
    • 导航到“属性”框
    • 点击“事件”
    • 找到“FormClosing”并双击它

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

    【讨论】:

      【解决方案4】:

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

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

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

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

      【讨论】:

      • TY!这也是我的问题。回复:线程,我以前从未使用过那个窗口......如果你设置了断点,你只能看到它们。当你中断时,它们可以通过 DEBUG->Windows 看到。
      猜你喜欢
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多