Visual Studio 2008 devenv 运行应用程序,然后离开幽灵
Posted
技术标签:
【中文标题】Visual Studio 2008 devenv 运行应用程序,然后离开幽灵【英文标题】:Visual Studio 2008 devenv running application, then leaving ghost 【发布时间】:2010-01-12 18:45:09 【问题描述】:我正在使用 Visual Studio 开发 C#/WPF 应用程序。这个应用程序使用一个 com 端口,然后在退出时释放它。我经常使用调试器来运行和停止这个应用程序。有时,我在启动调试会话时遇到异常,提示 com 端口已在使用中。
代码总是在退出时关闭打开的 com 端口,所以我运行了 portmon 来查看谁在使用该端口。事实证明,在“正常”情况下,端口被我的应用程序(portmon 中的 Process KaleidoscopeApp)抓取、使用和关闭。在未释放端口的情况下,该端口正被进程“devenv”使用,即 Visual Studio 本身。
为什么在这些情况下 devenv 是 com 端口的所有者?当我关闭应用程序时,为什么它继续持有它?只有当我关闭 Visual Studio 时才会释放端口。这是一种奇怪的行为,尤其是因为调试器已在 Visual Studio 中特别停止。
这是来自 portmon 的捕获,显示了对 com 端口的访问。您可以看到一个典型的会话以 IRP_MJ_CREATE 开始并以 IRP_MJ_CLOSE 结束。 KaleidoscopeApp 总是如此。您可以看到最后一位是由 devenv 运行的。然而每次启动总是在 VS 调试器中。
357 0.11112275 KaleidoscopeApp IRP_MJ_CREATE Serial4 SUCCESS 选项: 打开 358 0.00000305 KaleidoscopeApp IOCTL_SERIAL_GET_PROPERTIES Serial4 成功 ...
406 0.02997366 KaleidoscopeApp IRP_MJ_CLEANUP Serial4 成功 407 0.03390231 KaleidoscopeApp IRP_MJ_CLOSE Serial4 SUCCESS 408 0.11443431 KaleidoscopeApp IRP_MJ_CREATE Serial4 SUCCESS 选项: 打开 409 0.00000727 KaleidoscopeApp IOCTL_SERIAL_GET_PROPERTIES Serial4 成功 ...
457 0.02995160 KaleidoscopeApp IRP_MJ_CLEANUP Serial4 成功 458 0.03389956 KaleidoscopeApp IRP_MJ_CLOSE Serial4 成功 459 0.11307261 devenv.exe IRP_MJ_CREATE Serial4 SUCCESS 选项: 打开 460 0.00000185 devenv.exe IOCTL_SERIAL_GET_PROPERTIES Serial4 成功 ...
501 35.55274341 devenv.exe IOCTL_SERIAL_WAIT_ON_MASK Serial4 CANCELLED
任何见解将不胜感激!
【问题讨论】:
我也遇到过同样的问题,但用的是文件。它与调试器环境有关,但我不确定。 这是“它自己解决了”的情况吗?记得您是否更改了任何设置? 这有点太离奇了。在 DataReceived 事件处理程序中使用 Invoke() 时,SerialPort.Close() 很容易出现死锁。至少消除可能的死锁,只是不要调用Close()。没必要。 我的 DataReceived 处理程序只是将传入字节排入队列并触发 AutoResetEvent。似乎没有发生任何僵局。我相当确定这与 Visual Studio 调试器有关。我将发布从 portmon 捕获的内容。 使用 devenv.exe /safemode 选项启动 Visual Studio,这样您就可以确定不是某种附加组件在抢占端口。 【参考方案1】:上周我遇到了完全相同的问题,VS2008 和 VS2010。解决此问题的一种方法是从解决方案文件夹中删除 .suo 文件。
VS 这样做的原因是什么,为什么将它存储在 .suo 文件中?我不知道...
【讨论】:
以上是关于Visual Studio 2008 devenv 运行应用程序,然后离开幽灵的主要内容,如果未能解决你的问题,请参考以下文章
Win7安装了Visual Studio 2008没有快捷方式怎么办
使用以前版本的 Visual Studio 的 devenv 从 VS2017 测试 Visual Studio 扩展不起作用