У меня есть целочисленный массив, объявленный в классе. Используя этот массив, PolyLine нарисована на сетке. Элементами массива являются y-координаты. Массив должен обновляться непрерывно, а затем значения должны отображаться. Моя идея реализовать это состоит в том, чтобы иметь два потока. Один для обновления значений массива, а другой для печати PolyLine в сетке. Обновление массива не является проблемой. Когда я пытаюсь распечатать PolyLine на сетке, используя приведенный ниже код, возникает исключение со следующим сообщением: «Вызывающий поток не может получить доступ к этому объекту, потому что ему принадлежит другой поток». Просьба предложить обходной путь для этой проблемы с помощью потока. Возможно, вместо потока можно использовать событие? Я открыт для предложений. Любая помощь приветствуется!Управление элементами WPF
public partial class MainWindow : Window
{
Polyline Wave = new Polyline();
public MainWindow()
{
InitializeComponent();
Refresh();
DisplyOnGrid();
ThreadStart child = new ThreadStart(DisplyOnGrid);
Thread _DisplayOnGrid = new Thread(child);
_DisplayOnGrid.Priority = ThreadPriority.Highest;
_DisplayOnGrid.Start();
}
private void DisplyOnGrid()
{
Wave.Stroke = Brushes.Yellow;
Wave.StrokeThickness = 1.25;
for (int i = 0; i < DisplayGrid.Width; i++)
{
Wave.Points.Add(new Point(i, 50));
}
DisplayGrid.Children.Add(Wave);
}
private void Refresh()
{
DisplayGrid.Children.Clear();
}
}
Почему вы удаления полилинии из сетки, а затем добавить снова? Вместо этого вы можете просто заменить свою коллекцию «Points». Кроме того, вы должны использовать диспетчер, как показано в ответе, или, возможно, вообще не использовать Thread, и вместо DispatcherTimer. – Clemens