根据 MSDN 的DataReceived活动,它说
当从 SerialPort 对象接收到数据时,将在辅助线程上引发 DataReceived 事件。
这是否意味着只有一个辅助线程始终触发该事件?或者 SerialPort 对象每次触发DataReceived事件时都会创建一个新线程吗?那么DataReceived当我在活动中时我的活动可以触发吗DataReceived?
我试图用谷歌搜索这个但找不到好的答案。
根据 MSDN 论坛上的这篇文章。
当它发生时,在您的情况下收到的数据,它会浸入 ThreadPool 并调用 QueueUserWorkItem() ,它会分配一个线程池线程来调用您的 DataReceived 事件处理程序。然后它立即再次调用 WaitCommEvent() 以等待下一个“有趣的事情”。
听起来该SerialPort对象使用了 a ThreadPool,因此尽管DataReceived事件是在不同的 上调用的Threads,但它们已经存在于 a 中ThreadPool,因此没有创建新事件的开销。
因此,即使您在其中,事件也可能会触发,因为它将位于不同的线程上。