【问题标题】:Visual Studio prevents Serial Port Connection in a WPF projectVisual Studio 阻止 WPF 项目中的串行端口连接
【发布时间】:2021-03-22 21:30:20
【问题描述】:

如标题中所述 - 我有一个 wpf 应用程序,它通过虚拟 COM 端口与我的设备进行串行端口通信。问题是 Visual Studio 有时会“阻止”连接,我的设备无法连接。我一直在寻找我的通信有时有效有时无效的原因(特别是它在我的 winform 应用程序中使用相同的串行端口代码 100% 的时间),经过一番挫折后,我慢慢发现了什么是导致问题(SerialPort 类抛出的异常没有帮助)。首先,我注意到在大多数情况下重新启动 PC 会有所帮助。然后我注意到,即使在从 exe 运行的旧 winform 应用程序上,我也开始出现连接问题。经过大量的试验和错误,事实证明是 Visual Studio 导致了问题 - 第二次我关闭 VS 我的 winform 应用程序再次连接。当我从可执行文件运行我的 wpf 应用程序时,问题也永远不会发生。因此,只有在 VS 中打开我的 wpf 项目时才会发生这种情况(它根本不必运行,没有区别)。

我的编程经验不是很强大,但我想知道究竟是什么导致了问题以及是否可以解决它 - 当我不知道它是否会连接时,使用我的应用程序非常令人沮丧。我猜 VS 会在后台运行一些代码,即使项目没有运行(毕竟设计人员会实时对代码的更改做出反应)。

关于如何查明问题的任何建议?

【问题讨论】:

    标签: c# wpf visual-studio serial-port virtual


    【解决方案1】:

    您可能没有正确处理您的SerialPort,因此它可能会保持打开状态,直到垃圾收集器收集它或进程退出。

    调试时,Visual Studio 不会直接运行您编译的可执行文件,而是将其加载到debug host process 下,当调试停止时它仍然在运行。您可以尝试在项目属性中禁用主机进程,看看是否有帮助。

    这也可能是您的代码在可视化设计器中运行引起的,您可以尝试在逻辑中使用detect designer mode 并阻止打开端口。

    【讨论】:

    • 您好,谢谢您的回复。我尝试以多种方式关闭端口等,但都没有奏效。存在 UnathorisedAccessException 或 IOException(端口不存在 - 即使它在设备管理器中仍然可见)。另外,当我停止调试时,它不会被收集吗?调试主机进程在我正在使用的VS2017中不再使用,所以可能不是。
    猜你喜欢
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 2019-09-04
    相关资源
    最近更新 更多