C# 串口问题 怎样精确地每隔10ms读取串口中的数据

我想每隔10ms读取一次传感器产生的数据,传感器是通过采集器然后输出为串口形式的。我是这样做的:利用线程每隔10ms发送一次读取命令,然后在DataReceived事件中利用serialPort.read()进行读取,同时利用dateTime.Now.Millisceond为每条读取的记录标记时间戳,最后存储在列表中。但发现列表中每条记录的时间间隔不是10ms,有两条记录时间间隔很大的情况出现,同时也有一条记录包含多条返回数据的情况,
请高手们指点,为什么出现这种情况,我想每隔10ms利用串口接收传感器的数据应该怎么写呢?

要排除发送读取命令与接受数据的时间间隔在每次反馈中是否一致,不一致的话出现间隔不是10ms或者很长间隔的情况是存在的。

每隔10ms接收一次数据的目的?是为了写日志还是更新UI?