2015-08-04 6 views
2

В настоящее время у меня есть набор значений от датчика, захваченного из потока. Я хочу построить эти значения на диаграмме в режиме реального времени, скажем, каждые 1 секунду.Обновление диаграммы из другого потока

Так что я обычно делаю это (в непоточную версии):

1) Получить данные в список

2) Нажмите кнопку, чтобы запустить myChart.Refresh()

3) Trigger OnPaint(), чтобы нарисовать график.

Однако я понял, что не могу вызвать OnPaint() в потоке. Я также знаю, что есть класс BackgroundWorker, но я не уверен, как запускать метод OnPaint() с этим.

+0

У вас уже есть код для нарезки? – jtabuloc

+0

Попробуйте написать код «Control.CheckForIllegalCrossThreadCalls = false» в событии загрузки формы и, следовательно, вы можете вызвать метод _OnPaint() _ из вашего потока, не используя _BackgroundWorker_ –

ответ

0

OnPaint() можно вызывать только в основном потоке пользовательского интерфейса, так как ему нужно нарисовать график и обновить интерфейс. Вы можете взаимодействовать и выполнять действия пользовательского интерфейса из любого потока, используя Dispatcher Class. Обратитесь к этому link, чтобы узнать больше о диспетчерах.

Смежные вопросы