2011-04-27 4 views
3

의 우리가 follwing을 코드가 있다고 가정 해 봅시다 :SerialPort는 자체 스레드에서 데이터를 수신합니까?

스레드가 차단되는 그 5000 밀리 초 동안 5 바이트는 버퍼에 5 바이트가 있다는 것을, 직렬 포트에 코드 인쇄를 할 보내진 경우
SerialPort port = new SerialPort("COM2", 115200); 
port.Open(); 
// 
Thread.Sleep(5000); 
// 
if (port.BytesToRead > 0) 
{ 
    Console.WriteLine("Bytes in buffer: " + port.BytesToRead.ToString()); 
} 

? 또는 Thread.Sleep이 반환 될 때까지 수신을 시작하지 않겠습니까?

감사 예컨대 하드 디스크 드라이브, 네트워크 포트, 및 예, 직렬 포트, ThreadPool이 관리하는 I/O 완료 스레드를 사용하여 수행되는 하드웨어 장치에

답변

8

통신. 따라서 귀하의 질문에 대한 짧은 대답은 귀하의 프로그램이 활발하게 운영되지 않고 그것을 청취하고있을 때에도 항구가 데이터를 수신해야한다는 것입니다. 스레드가 깨어나면 포트에 얼마나 많은 바이트가 버퍼에 있는지 묻고 스레드를 잤을 때 5 바이트가 더 있다는 응답을 보냅니다.

+0

이것은 내가 알아야 할 감사의 말이다. – JayPea

관련 문제