Я думаю, что время 10 мс связано с переключением задач. Даже если ваше приложение синхронизации является единственной выполняемой пользовательской задачей, все еще есть куча системных задач, которые могут быть включены.
Кроме того, я догадываюсь , что время между получением символа на порту и получением события DataReceived
(или любого другого программного уведомления, которое вы хотите) сильно варьируется. Микросхема UART может не прерывать процессор до тех пор, пока он не почувствует себя так (обычно, когда его FIFO заполнен или истекает некоторый тайм-аут), тогда ядро может принять решение, что потребуется некоторое время, прежде чем отправлять эту информацию о прерывании в ваше приложение. Поэтому, даже если вы можете использовать таймер с высоким разрешением в своем программном обеспечении, вы, вероятно, будете зависеть от изменчивости уровня оборудования / ядра.