我无法结束MyApp.vshost.exe进程

59

我现在处于这样一种状态:没有devenv的任何实例运行,但是后台仍然有一个MyApp.vshost.exe(没有可见的窗口或控制台)。

我尝试过任务管理器、ProcessExplorer和命令行(taskkill /F /IM MyApp.vshost.exe),但它们都没有报错,命令行甚至显示“PID 5824已停止”,但实际上它仍然存在。

我知道重新启动可以解决问题,但我更想找到问题的根本原因。

看起来这不像是这个问题(http://support.microsoft.com/kb/982551),因为我可以轻松地重新启动(事实上,我刚刚重新启动了,所以无法提供进一步诊断,抱歉)。

编辑

我是这样遇到这个问题的:

alt text

4个回答

89

我成功终止了持久化的vshost进程,具体步骤如下(VS2010):

  1. 打开可执行项目属性
  2. 在"调试"标签中,取消选中"启用Visual Studio托管进程"
  3. 保存项目文件

以上操作后,进程将停止,无需重启Visual Studio。


关于 Visual Studio 托管进程:https://dev59.com/H3I95IYBdhLWcg3w-DHz - Yves M.
1
另一种在我的情况下可行的简单方法是将不同的项目设置为启动项目。 - Patrick

22

这似乎是该任务的正常行为。当你杀死它时,任务会重新启动。因此我建议您关闭 Visual Studio,这将关闭 *.vshost.exe 任务。


抱歉,我没有看到那个。所以在进程资源管理器中,您的*.vshost.exe没有父进程吗? - Nicolas
1
@Nicolas,不,这就是很奇怪的地方。 - Benjol
@Benjol,抱歉我误解了,但是你的App.vshost.exe从哪里来?你关闭VS,但App.vshost.exe仍然在运行? - Nicolas
@ Nicolas,是的,我必须承认,我“干掉了”一个VS,因为它在停止调试会话方面太耗时间了。 - Benjol
我敢打赌他有一个隐藏的devenv。 - zumalifeguard

1

也许这就是与https://stackoverflow.com/a/1582747/254041中描述的问题相同(待处理的I/O进程):

MSDN API参考文献说:“TerminateProcess启动终止并立即返回。这会停止进程内所有线程的执行并请求取消所有挂起的I/O。终止的进程无法退出,直到所有挂起的I/O已完成或已取消。” 这意味着:您的I/O可能会阻塞此进程(尽管我想知道它如何将您的进程带到100%,通常I/O不会这样做)。


1

我在使用.NET 2.0作为目标框架的项目中遇到了同样的问题。将目标框架暂时更改为.NET 4.0客户端版本解决了我的问题。

然而,我不确定这与文件锁定问题是否有关。


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