Задать вопрос
@Ramirag
Я человек.

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

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

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

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

Похожие вопросы