8

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

谢谢你。

4

4 回答 4

7

从这里试试这个

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(...);

你可以看到怎么做?从这里

于 2012-04-13T08:28:59.930 回答
1

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

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

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

我知道这不是您可能期望的解决方案,但是找出为什么应用程序没有正确退出或仍然保持后台进程处于活动状态是一个非常棘手的主题。活动线程下拉是查看恕我直言的最佳位置。

于 2018-01-19T16:01:18.933 回答
1

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

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

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

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

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

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

于 2016-12-01T05:31:00.737 回答
0

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

于 2014-07-30T08:52:15.973 回答