繁体   English   中英

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

[英]In C#, does the DataReceived event handler of the SerialPort class execute on it's own thread?

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

我的问题是,何时接收到数据-DataReceived事件是在其自己的线程中运行还是保持同步? 也就是说,在DataReceived完成之前,是否会阻塞Send()函数? 如果我使用线程锁定机制(例如AutoResetEvent(s)),则默认情况下会阻止UI线程吗?

干杯们。

MSDN说:

从SerialPort对象接收数据时,在辅助线程上引发DataReceived事件。 由于此事件是在辅助线程而非主线程上引发的,因此尝试修改主线程中的某些元素(例如UI元素)可能会引发线程异常。 如果需要修改主窗体或控件中的元素,请使用Invoke将更改请求回发,这将在适当的线程上完成工作。

是的

SerialPort.DataReceived

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM