Обработка данных последовательного порта

У меня есть этот код:

private void SerialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
{
    while(_serialPort.BytesToRead > 0)
    {
       var count = _serialPort.BytesToRead;
       var bytes = new byte[count];
       _serialPort.Read(bytes, 0, count);
       AddBytes(bytes);
    }
}

Код взят из Опрос последовательного порта и обработка данных.

Мой вопрос касается цикла «Пока». Когда обновляется "_serialPort.BytesToRead"? Это означает, что если описанный выше метод является методом, управляемым событиями, и я использую «_serialPort.Read», разве он не очищает весь буфер последовательного порта? Если ответ отрицательный, этот код может создать бесконечный цикл, не так ли?


person AnR    schedule 21.04.2015    source источник
comment
нет, все в порядке, _serialPort.Read, конечно, очистит буфер, может быть, что-то еще будет получено после, но это тоже хорошо - только вы должны проверить возврат _serialPort.Read - на случай, если он действительно не прочитал все count байт   -  person Random Dev    schedule 21.04.2015