我正在使用SerialPort
该类在 C# 中进行开发。
SerialPort.Write()
是一种阻塞方法。当我想停止写作时,如何退出这个方法?我用一个线程来写。当我想停止写入但 COM 端口继续写入时,我中止了这个线程。
有任何想法吗?
非常感谢。
对不起我的基本英语。
我正在使用SerialPort
该类在 C# 中进行开发。
SerialPort.Write()
是一种阻塞方法。当我想停止写作时,如何退出这个方法?我用一个线程来写。当我想停止写入但 COM 端口继续写入时,我中止了这个线程。
有任何想法吗?
非常感谢。
对不起我的基本英语。
Serial Port 的 Stream 和 UART 都会做缓冲。
最好的方法是发送小包(行)并中断写入线程,让最后一个发送包出去。如果您可以以文明的方式停止写入,那么还有 DiscardWriteBuffer() 方法。
如果小包不是一个选项,您至少可以将 WriteBufferSize 设置为较小的值(但 > 0)。
打破使用阻塞SerialPort.Write()
状态 SerialPort.DiscardOutBuffer()
。这会导致一个IOException
问题,但只要您可以干净地摆脱阻塞状态就可以了。