【发布时间】:2012-02-06 20:20:28
【问题描述】:
我的程序使用 MSSQL 数据库并且运行良好。但是,在进行了一些更改后,包括从 VS2008 转换为 VS2010,生成 32 位应用程序。它开始出现以下奇怪的问题: 当我尝试通过单击系统菜单(X 按钮)关闭控制台时,它并没有关闭,您可以移动控制台,也可以单击左侧的系统菜单,例如属性等,但程序没有显示在任务管理器的进程选项卡上,因此,没有办法关闭它,只能重新启动框。
另外,当程序处于这种幻影模式时,我实际上可以启动另一个实例。这意味着 ghost 应用程序已经释放了大部分资源,例如文件句柄、db 等。
问题似乎是在我们的 ms-sql 服务器出现一些问题后出现的,例如超时异常。我通过在同一个 db 函数调用中抛出异常来模拟这种情况,但这确实会产生幽灵情况。框是没有 Hyper-V、SP2、32 位的 Windows Server Standard。
【问题讨论】:
-
澄清一下,您有一个控制台应用程序在服务器上的命令提示符窗口中运行?
-
如果从进行 DB 调用的块中抛出异常会重现问题,那么您应该查看在抛出异常后没有发生什么(即,哪些代码没有正常运行) .
-
这可能是一个愚蠢的问题,但是在您尝试关闭它之前它会出现在任务管理器中吗?您是否正在检查所有用户的进程。它是否发生在调试中,是否仅在您部署到的机器上?如果我被难住了,我会添加一个日志文件(鉴于我还没有日志文件,我会这样做),然后开始写它,收集一些线索。
-
这是环保的。除非您将调试器附加到 conhost.exe 进程并获得良好的堆栈跟踪,否则很难猜测可能出了什么问题。
-
它是控制台应用程序,发布版本,没有窗体,没有窗口。它最初显示在任务管理器或应用程序和进程选项卡上。当用户点击 cmd 提示控制台的 X-system-menu 时,程序立即关闭。该程序通常会在周末重新启动,那时它可能会遇到已关闭的问题,并且日志显示它存在 Main(),因此在任务管理器中什么都没有留下,而是显示过时消息的幽灵控制台提示。我的其他操作系统如Win7、XP不会出现此问题。由于没有显示过程,我将如何远程附加调试器。
标签: c#