Согласно этому сообщению на форумах MSDN здесь .
Когда это происходит, данные, полученные в вашем случае, опускаются в ThreadPool и вызывают QueueUserWorkItem (), который выделяетпоток пула потоков для вызова вашего обработчика событий DataReceived.Затем он снова немедленно вызывает WaitCommEvent (), чтобы дождаться следующего «чего-то интересного».
Звучит так, как будто объект SerialPort
использует ThreadPool
, поэтому, хотя вызывается событие DataReceived
в различных Threads
они уже существуют в ThreadPool
, и поэтому нет никаких накладных расходов на создание новых.
Таким образом, возможно, что событие будет запущено, даже когда вы находитесь там, потому что оно будетв другой теме.