@Ramirag
Я человек.

Как в C# передать сообщение из дочернего потока в главный?

Мне нужно получать информацию с двух плат. Сами платы реализованы через пень колоду и в них нет режима прерывания, потому в двух потоках у меня будет в бесконечном цикле получаться с них информация и сравниваться с предыдущим значением. Если значение меняется, то это новое значение главный поток у меня должен будет обработать, а второстепенный поток должен продолжить получать информацию с платы. Если я сделаю событие и буду его генерировать при изменении, то его обработчик будет работать в том-же потоке, что мне не подходит. В голову приходят только программные прерывания на уровне ядра, но я не имею ни малейшего понятия, как это делается.
  • Вопрос задан
  • 4550 просмотров
Решения вопроса 1
@DancingOnWater
Есть класс Dispatcher. Думаю он решит вашу проблему
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@plasticmirror
queue прикрутить. один поток выгребает из очереди все и делает дело, остальные потоки дергают платы и если надо - добавляют сообщение в очередь.

на примитивах типа Monitor.Wait / Monitor.Pulse очередь очень простая получается.
заодно решается проблема, когда значения изменяются быстрее, чем обрабатывается факт изменений.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы