C# 为什么';当我在dispatcher中添加子项时,我的网格是否会更新?

C# 为什么';当我在dispatcher中添加子项时,我的网格是否会更新?,c#,wpf,backgroundworker,kinect,dispatcher,C#,Wpf,Backgroundworker,Kinect,Dispatcher,我正在使用kinect运行一个相当简单的任务,只是尝试使用轮询方法显示数据流。我正在backgroundworker上运行所有处理,并使用dispatcher更新UI 下面的代码适用于在dispatcher中写入位图的深度和颜色流。但是,显示骨架需要具有子对象(多段线)的栅格。此代码运行时不会出错,但不会更新UI以显示行。我需要做什么才能使UI刷新网格并显示子对象 this._SkeletonGrid.Dispatcher.BeginInvoke(new Action(() => {

我正在使用kinect运行一个相当简单的任务,只是尝试使用轮询方法显示数据流。我正在backgroundworker上运行所有处理,并使用dispatcher更新UI

下面的代码适用于在dispatcher中写入位图的深度和颜色流。但是,显示骨架需要具有子对象(多段线)的栅格。此代码运行时不会出错,但不会更新UI以显示行。我需要做什么才能使UI刷新网格并显示子对象

this._SkeletonGrid.Dispatcher.BeginInvoke(new Action(() =>
{
     joints = new[] { JointType.Head, JointType.ShoulderCenter, JointType.ShoulderLeft, JointType.ShoulderRight, JointType.ShoulderCenter };
     this._SkeletonGrid.Children.Add(CreateFigure(skeleton, userBrush, joints));                          
}));

_SkeletonGrid是xaml网格对象,CreateFigure返回一条多段线。

您是在紧密循环中运行它的吗?您的BeginInvoke呼叫可能会落后。尺寸和尺寸呢?你画的是一个点吗?我想你在网格中只有一行和一列?@Brannon我正在试着画一条线(现在)。网格为:,其中_SkeletonGrid=LayoutRoot。我不知道你说的紧密循环是什么意思。你是否验证过你可以在BackgroundWorker线程之外使用CreateFigure添加一行?您所写的看起来应该可以正常工作,但布局中可能有其他组件导致网格实际上不可见。此外,您是否确保在将多段线添加到SkeletonGrid之前清除网格?@julenka是的,此代码肯定在UI线程中有效,但在dispatcher中无效。我确实在稍早的时候,在一个类似的调度程序块中有一个清晰的消息。