在C#中,SerialPort类的DataReceived事件处理程序是否在其上执行';谁有自己的线索?

在C#中,SerialPort类的DataReceived事件处理程序是否在其上执行';谁有自己的线索?,c#,multithreading,serial-port,C#,Multithreading,Serial Port,我有一个C#程序,它使用System.IO.Ports.SerialPort类通过串行端口进行通信。为了接收数据,我订阅了它的DataReceived事件处理程序 我的问题是,当接收到数据时,DataReceived事件是在自己的线程中运行,还是保持同步?i、 e.发送()函数是否会被阻止,直到数据接收完成?如果我使用线程锁定机制,比如AutoResetEvent,默认情况下会阻止UI线程吗 为大家干杯。MSDN说: 读取数据时,在辅助线程上引发DataReceived事件 从SerialPor

我有一个C#程序,它使用System.IO.Ports.SerialPort类通过串行端口进行通信。为了接收数据,我订阅了它的DataReceived事件处理程序

我的问题是,当接收到数据时,DataReceived事件是在自己的线程中运行,还是保持同步?i、 e.发送()函数是否会被阻止,直到数据接收完成?如果我使用线程锁定机制,比如AutoResetEvent,默认情况下会阻止UI线程吗

为大家干杯。

MSDN说:

读取数据时,在辅助线程上引发DataReceived事件 从SerialPort对象接收。因为此事件是在 次线程,而不是主线程,正在尝试修改某些 主线程中的元素(如UI元素)可能引发 线程异常。如果需要修改主视图中的图元 窗体或控件,使用Invoke将更改请求发回 在正确的螺纹上工作

所以是的

MSDN说:

读取数据时,在辅助线程上引发DataReceived事件 从SerialPort对象接收。因为此事件是在 次线程,而不是主线程,正在尝试修改某些 主线程中的元素(如UI元素)可能引发 线程异常。如果需要修改主视图中的图元 窗体或控件,使用Invoke将更改请求发回 在正确的螺纹上工作

所以是的