2011-04-27 44 views
3

比方說,我們有follwing代碼:SerialPort是否在自己的線程上接收數據?

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返回纔開始接收?

由於

回答

8

上的硬件設備,諸如硬盤驅動器,網絡端口,是的,串行端口,使用的是I/O完成的線程,通過線程池管理執行通信。所以,對你的問題的簡短回答是,即使你的程序沒有正在運行並且正在監聽,數據也應該被端口接收。一旦線程喚醒後,它會詢問端口有多少字節在緩衝區中,並且它會在你睡覺之前回應說它還有5個字節。

+0

這是我需要知道的,謝謝。 – JayPea 2011-04-27 16:07:51

相關問題