SerialPort DataReceived Поток событий - PullRequest
3 голосов
/ 18 марта 2019

Согласно MSDN для события DataReceived написано

Событие DataReceived возникает во вторичном потоке при получении данных от объекта SerialPort.

Означает ли это, что существует только один вторичный поток, который всегда вызывает событие? Или объект SerialPort создает новый поток при каждом запуске события DataReceived? Так может ли мое событие DataReceived сработать, пока я участвую в событии DataReceived?

Я пытался найти это в Google, но не смог найти хороший ответ.

1 Ответ

1 голос
/ 19 марта 2019

Согласно этому сообщению на форумах MSDN здесь .

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

Звучит так, как будто объект SerialPort использует ThreadPool, поэтому, хотя вызывается событие DataReceivedв различных Threads они уже существуют в ThreadPool, и поэтому нет никаких накладных расходов на создание новых.

Таким образом, возможно, что событие будет запущено, даже когда вы находитесь там, потому что оно будетв другой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...