Process 绘制到HelixViewPort3D时System.InvalidOperation异常

Process 绘制到HelixViewPort3D时System.InvalidOperation异常,process,helix-3d-toolkit,Process,Helix 3d Toolkit,当我想从进程中绘制到ViewPort3D时,总是会得到System.InvalidOperationException 我不明白的是什么 进程是否无法访问ui进程 我怎样才能解决这个问题 私有void Pro_OutputDataReceivedobject发送方,DataReceivedEventArgs e { 随机r=新随机; DrawSpherecounter,彩色。红色,双色。Next400/100; 计数器++; } 私有空心DrawSphereint i,彩色,双半径 { Sphe

当我想从进程中绘制到ViewPort3D时,总是会得到System.InvalidOperationException

我不明白的是什么

进程是否无法访问ui进程

我怎样才能解决这个问题

私有void Pro_OutputDataReceivedobject发送方,DataReceivedEventArgs e { 随机r=新随机; DrawSpherecounter,彩色。红色,双色。Next400/100; 计数器++; } 私有空心DrawSphereint i,彩色,双半径 { SphereVisual3D球体=新的SphereVisual3D; 圆心=新点3di*5,计数器*5,0; sphere.Visible=true; sphere.Fill=新的SolidColorBrushcolor; 球体半径=半径; viewPort.Children.Addsphere; }
您需要使用dispatcher来检查访问。您有两种选择: 第一种选择:

私有void Pro_OutputDataReceivedobject发送方,DataReceivedEventArgs e { 随机r=新随机; Application.Current.Dispatcher.Invokenew Action=>DrawSpherecounter,Colors.Red,doubler.Next400/100; 计数器++; } 第二种选择:

私有void Pro_OutputDataReceivedobject发送方,DataReceivedEventArgs e { 随机r=新随机; DrawToViewPortcounter,彩色。红色,双色。Next400/100; 计数器++; } 私有空心DrawToViewPortint i,彩色,双半径 { 如果viewPort.Dispatcher.CheckAccess { DrawSpherei、颜色、半径; } 其他的 { viewPort.Dispatcher.InvokeActionDrawToViewPort,i,颜色,半径; } }