繁体   English   中英

SerialPort 是否在自己的线程上接收数据?

[英]Does SerialPort receive data on its own thread?

假设我们有以下代码:

SerialPort port = new SerialPort("COM2", 115200); 
port.Open();
//
Thread.Sleep(5000);
//
if (port.BytesToRead > 0)
{
   Console.WriteLine("Bytes in buffer: " + port.BytesToRead.ToString());
}

如果在线程被阻塞的那 5000 毫秒内,有 5 个字节被发送到串行端口,代码会打印出缓冲区中有 5 个字节吗? 或者它不会在 Thread.Sleep 返回之前开始接收?

谢谢

硬件设备上的通信,例如 HDD、网络端口和串行端口,是使用由 ThreadPool 管理的 I/O 完成线程执行的。 因此,对您的问题的简短回答是,即使您的程序没有主动运行和监听数据,端口也应该接收数据。 一旦你的线程被唤醒,它会询问端口缓冲区中有多少字节,它会回复说它比你的线程睡觉前多了 5 个字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM