Я только что получил ответ от службы поддержки второго уровня в filestack ... мы можем получить прямой доступ к URL:
Путем я считал, что, Вы могли бы получить одно событие для нескольких байтов, а не одно событие на байт. Я все еще ожидал бы получать событие, когда данные готовы, и не имеют его, "пропускают" некоторые байты полностью.
Я всегда использовал это событие и не испытал затруднений из-за него.
Расхожее мнение имеет его, что "опрос плох", потому что это часто заканчивает тем, что было зависящим от ЦП процессом. Если блокирование ввода-вывода используется вместо этого, затем ЦП доступен для других процессов, пока случай не происходит.
Тем не менее обычно возможно настроить вещи так, чтобы опрос ожидал (короткого) тайм-аута прежде, чем возвратиться, когда никакие символы не доступны. Если подходящий тайм-аут выбран, то Ваш простой цикл опроса использует значительно меньше процессорного времени, и другие процессы также добираются для выполнения.
Я не использовал последовательные порты от C# вообще, но я собираюсь рисковать предположением это, под чем подразумевала документация
Событие DataReceived, как гарантируют, не будет сгенерировано для каждого полученного байта. Используйте свойство BytesToRead для определения, сколько данных оставляют быть считанными в буфере.
это, Вы не можете ожидать получать одно событие на символ. Это могло бы при некоторых обстоятельствах поставлять событие больше чем с одним доступным символом. Просто получите все доступные символы в своем обработчике событий, и все будут хорошо.
Править: Выполнение блокирующегося запроса к потоку читателя могло бы быть лучшим ответом в целом. Это не опрашивает по сути, так как поток заблокирован, пока символы не прибывают. Вы, возможно, должны были бы настроить буферные размеры и некоторые настройки последовательного порта, если необходимо обработать данные, когда они прибывают, а не в фиксированные размерные блоки.
Я почти уверен, что основной код драйвера последовательного порта управляется прерываниями, даже при использовании блокирующего вызова Read.