我在类中声明了一个整数数组。使用该数组,在网格上绘制PolyLine。数组的元素是y坐标。必须连续更新阵列,然后显示值。我实现这个的想法是有两个线程。一个用于更新阵列的值,另一个用于在网格上打印PolyLine。 更新阵列不是问题。当我尝试使用下面的代码在网格上打印PolyLine时,会抛出异常,并显示以下消息:“调用线程无法访问此对象,因为其他线程拥有它。” 请建议使用线程解决此问题。也许,可以使用事件而不是线程?我愿意接受建议。任何帮助表示赞赏!
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();
}
}
答案 0 :(得分:2)
您正在获取错误,因为您正在尝试访问UI / Dispatcher线程拥有的对象 尝试这样的事情:
private void DisplyOnGrid()
{
Dispatcher.Invoke(new Action(()=>
{
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);
}
))};