使用COM端口 - 每次使用后关闭,还是始终打开?

Ita*_*tay 11 c# serial-port

直到我需要发送数据时才打开,并立即关闭.我得到随机的"访问端口"错误(虽然我在使用它后总是关闭端口),所以我想也许可以让它始终打开.

什么是正确的使用方法,假设每一分钟或两分钟我需要在某些COM端口发送数据?

谢谢..

Han*_*ant 10

经常调用SerialPort.Close()是一个错误.让另一个应用程序偷走远离你的端口并不是非常理想.但是问题更多,而你遇到的问题是,Close()不会等待由SerialPort启动的工作线程退出.该工作线程引发DataReceived,PinChanged和ErrorReceived事件.退出需要"一段时间",可能在几毫秒到几秒之间.再次调用Open()将失败,直到完成.

这是该类中的一个缺陷,但是由串行端口的常见用法引起.在应用终止之前,应用通常不会关闭它们.包括never,避免常见的死锁情况.请注意,关闭的MSDN文章警告:

任何应用程序的最佳实践是在尝试调用Open方法之前等待一段时间后再调用Close方法,因为端口可能不会立即关闭.