如何关闭另一个程序使用的serialport

Jer*_*rry 3 c# serial-port

我正在写一个SerialPort程序.有时,当我想打开SerialPort时,会抛出UnauthorizedAccessException:拒绝访问COM1.这是因为另一个程序(由其他人编写,我没有它的源代码)正在使用COM1,并且该程序在退出时不会关闭它.我想问两个问题:

  1. 当另一个程序使用COM1时,如何用我的代码(特别是C#代码)关闭它?
  2. 如果我无法用C#代码关闭COM1,如何在Windows操作系统中关闭或释放COM1?

谢谢.

小智 6

此Stack Overflow问题是第一步:如何通过C#中的进程获取打开文件句柄列表?

完成后,您可以修改那里的代码以关闭句柄,或者只是终止打开句柄的进程.

然而,这非常冒险*,容易出现问题,需要根据特定部署(x32 vs x64 vs ARM)以及'COM1'映射到该特定计算机上的内容进行重新设计.

风险:如果正在使用串行端口,例如,在手机或类似设备上安装新固件 - 关闭端口可能会导致设备变砖.如果端口用于传输数据,则关闭端口可能会导致数据丢失.

祝好运.但是,如果您破坏系统或丢失数据,请不要责怪我.