嗯,当然,这没有错。而且通常非常有用,因为 DataReceived 事件处理程序应该尝试接收整个“数据包”,然后再将其交给处理数据的其他代码。特别是如果您使用 BeginInvoke 在 UI 线程上运行代码。不同的设备通常有不同的协议,因此在它们各自的事件处理程序中需要不同的代码。或不同的缓冲区来存储部分响应。
或者不是,所有设备都运行相同并且共享相同的事件处理程序代码将起作用。您需要将sender参数转换为 SerialPort 以进行正确的 Read 调用。在您的问题中,几乎没有什么可以猜测的适当方式。