如何关闭从Visual Studio中打开的“孤立”的控制台窗口?

3
在Visual Studio中处理控制台应用程序时,我会按F5运行应用程序以将其带入调试模式。偶尔(我不确定是如何发生的),我会回到Visual Studio的“编辑模式”,但调试的控制台窗口仍然打开。
它会保持打开状态,但完全无响应。我无法通过右键单击窗口并单击“关闭”来关闭窗口;我无法通过任务管理器关闭它,也无法通过结束特定进程来关闭它(据我所知)。实际上,当这种情况发生时,我甚至无法退出Windows,除非物理按下电源按钮重新启动计算机。
如何在不必重新启动计算机的情况下关闭窗口?
系统信息:Windows XP SP3,Visual Studio 2010
编辑:通常发生在我打断点进入调试模式之后。所有异常都被传递并打印到控制台,因此不是因为异常导致应用程序崩溃,但有时我会一步步地执行应用程序,直到到达捕获异常的应用程序部分,但在将其实际抛回UI之前。

这很可能是因为你的应用程序引发了异常。检查一下是否尝试访问不该访问的内存,或者是进入了无限循环? - Ranhiru Jude Cooray
@Ran,我添加了一些更多的信息,这应该有助于澄清。 - Ben McCormack
3个回答

4
我遇到了几乎相同的问题,并找到了另一种解决方案,所以在此发布,以帮助其他人解决问题...
在我的情况下,我正在运行XP SP3和VS 2005。如果我停止调试控制台应用程序(有时候),命令窗口就不会关闭。
问题是进程实际上已经退出,它只是不出现在任务管理器中,因此无法对窗口进行任何操作或关闭。 窗口仍然对标记/复制/粘贴/滚动等保持响应,但仅此而已。
在MS支持网站上找到了一个热修复程序: http://support.microsoft.com/kb/982551

非常感谢您发布这个。这个问题一直困扰着我,我很高兴看到有些东西可以帮助我解决它。 - Ben McCormack

2
第一部分是正常的,当调试器处于中断模式时,控制台窗口无法响应关闭请求。
通过“调试 + 停止调试”可以终止程序。然而,对于XP及更早版本,如果内核线程正在执行进程的I/O请求,则该进程无法终止。您可以从Taskmgr.exe的“进程”选项卡中查看此条件。选择“查看+选择列”,勾选“句柄”。当您看到它显示1个正在使用的句柄时,您就有了一个僵尸进程。
不太确定如何摆脱这种情况,因为它相当特定于未完成的I/O请求。我很久以前就放弃了XP,我依稀记得杀死devenv.exe来解决这个问题。Windows 7很好,值得推荐。

我在家使用Win 7并且很喜欢它。希望当我们年底升级到Win 7时,这个问题会自行解决。 - Ben McCormack

1

我曾经在Windows XP上遇到过这个问题。第一次在Win 7上遇到它。这真的很烦人。

编辑:结束devenv.exe进程对我有用。重新启动sln很麻烦。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接