最近公司让写一个串口通讯的功能加到原来的系统中。使用的是serialPort这个控件,命令到达的相关处理是在SerialPort.DataReceived 事件中进行处理的。
看了下MSDN中的说明:
“从 SerialPort 对象接收数据时,将在辅助线程上引发 DataReceived 事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如 UI 元素)时会引发线程异常。”
这里有几个疑问,望大牛们指点下。
1、辅助线程上引发事件和主线程上引发事件有啥不同?
2、这个事件在辅助线程上处理,事件会不会重复引发,意思就是这个DataReceived事件已经引发,串口又有数据到达,这个时候,先前那个时间处理过程还没结束,这个事件会立即引发还是延迟引发,或是别的一种机制?这个问题是关键,也就是这个辅助线程是只在一个线程中串行处理。还是可以有几个线程,对引发的DataReceived事件并行处理的?
很是感谢! |
|