我正在写一个SerialPort程序。有时,当我想打开SerialPort时,会抛出UnauthorizedAccessException:拒绝访问COM1。这是因为另一个程序(由其他人编写而我没有其源代码)正在使用COM1,并且该程序在退出时不会关闭COM1。
我想问两个问题:
感谢。
答案 0 :(得分:6)
此Stack Overflow问题是第一步:How do I get the list of open file handles by process in C#?
完成后,您可以修改那里的代码以关闭句柄,或者只是终止打开句柄的进程。
然而,这非常冒险*,容易出现问题,需要根据特定部署(x32 vs x64 vs ARM)以及'COM1'在该特定计算机上映射到的内容进行重新设计。
风险:如果正在使用串行端口,例如,在手机或类似设备上安装新固件 - 关闭端口可能会导致设备变砖。如果端口用于传输数据,则关闭端口可能会导致数据丢失。
祝你好运。但是,如果您破坏系统或丢失数据,请不要责怪我。答案 1 :(得分:-2)
您可以通过调用
关闭C#中的通讯端口serialPort.Close();
但除非仅由您打开,否则无法关闭COMM端口。
确保在关闭应用程序时关闭通讯端口。如果您可以放置代码,我们可以查看它。