Хорошо, пожалуйста, не обращайте внимания на то, что было раньше. Я больше не получаю ошибки, поэтому мне кажется, что проблема заключается в получении диаграммы для обновления при изменении значений, которым привязана карта.Control.Refresh() По темам
// Оставься здесь ниже
Привет всем. У меня есть приложение WinForms, которое имеет панель, panel1
. Фоновый поток создает некоторые другие элементы управления, которые затем добавляются в panel1
как так
panel1.Controls.AddRange(myArrayOfControls);
Это прекрасно работает, и я могу видеть мои элементы управления добавляются. Но когда новые данные поступают в другой поток, я обновляю значения в родительских объектах элементов управления, а затем должен Refresh()
, чтобы обновить отображение новыми значениями. Вызов Refresh()
в любом контексте, поток, в который входят данные или объекты, которые получают обновленные данные, вызывает исключение InvalidOperation, поскольку Invoke требуется. Я попытался использовать Invoke в объектах модели, а также поток, в котором данные поступают, и не может пошатнуть ошибку.
Если у кого-то есть руководство, я очень благодарен.
ОБНОВЛЕНИЕ: вот немного больше информации. Я не думал, что это потребует, но я ошибся. :)
У меня есть объект класса MyObject. Этот класс MyObject создается в потоке, называемом topologyThread. Данные поступают в dataThread. В экземплярах MyObject есть переменная экземпляра Panel, и у Panel есть дочерние элементы управления, включая два диаграммы из пространства имен System.Windows.Forms.DataVisualization.Charting. Таким образом, по мере поступления данных в dataThread, я обновляю соответствующие значения данных в объектах MyObject, а затем обновляю диаграммы для отображения обновленных данных.
Я знаю, что данные обрабатываются штрафом. В моем классе MyObject я регистрирую новые значения в Console в setter для свойства и вижу, как появляются новые значения.
+1, теперь вы на 10 повторений ближе к возможности комментировать. :) –