我正在编写一个 SerialPort 程序。有时当我想打开 SerialPort 时,会抛出 UnauthorizedAccessException :访问 COM1 被拒绝。这是因为另一个程序(由其他人编写,我没有它的源代码)正在使用 COM1,并且该程序在退出时不会关闭 COM1。
我想问两个问题:
- 如何在使用时用我的代码(尤其是C#代码)关闭COM1 由另一个程序?
- 如果我无法使用 C# 代码关闭 COM1,我该如何在 Windows 操作系统中关闭或释放 COM1?
谢谢。
最佳答案
这个 Stack Overflow 问题是第一步:How do I get the list of open file handles by process in C#?
一旦你有了它,你就可以修改那里的代码来关闭句柄,或者干脆杀死打开句柄的进程。
然而,这是非常危险的*,容易出现问题,并且需要根据特定部署(x32 vs x64 vs ARM)以及“COM1”映射到该特定机器上的内容进行重新设计。
风险:例如,如果串行端口用于在手机或类似设备上安装新固件 - 关闭端口可能会导致设备变砖。如果该端口正用于传输数据,则关闭该端口可能会导致数据丢失。
祝你好运。但是,如果您破坏了系统或丢失了数据,请不要怪我。
关于c# - 如何关闭另一个程序使用的串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11183348/