ОК, пожалуйста, не обращайте внимания на то, что было раньше. Я больше не получаю сообщения об ошибках, поэтому, похоже, моя проблема в том, чтобы заставить Диаграмму обновляться при изменении значений, для которых Диаграмма привязана к данным.
// Здесь не учитывается
Привет всем. У меня есть приложение 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 я записываю новые значения в консоль в установщике свойства и вижу новые значения.