Wpf 是否从视口中删除ScreenSpaceLines3D对象?

Wpf 是否从视口中删除ScreenSpaceLines3D对象?,wpf,vb.net,dll,3d,nullreferenceexception,Wpf,Vb.net,Dll,3d,Nullreferenceexception,我正在用VB中的WPF制作一个3D游戏,我正在使用我找到的一个ScrennSpaceLines3D对象 但是,当我尝试删除一条线时,我使用 mainViewport.Children.RemoveAt(i) 它给出了一个NullExceptionError。我读到这是因为它没有完全从渲染队列中退出。c#已经有了修复程序,但我还没有找到一个可以与VB一起使用的。有没有一种方法可以使这项工作,或者可能以其他方式在3D空间中画一条线?我觉得很可笑的是,VB甚至没有办法轻松地绘制3D线条…删除

我正在用VB中的WPF制作一个3D游戏,我正在使用我找到的一个ScrennSpaceLines3D对象 但是,当我尝试删除一条线时,我使用

    mainViewport.Children.RemoveAt(i)

它给出了一个NullExceptionError。我读到这是因为它没有完全从渲染队列中退出。c#已经有了修复程序,但我还没有找到一个可以与VB一起使用的。有没有一种方法可以使这项工作,或者可能以其他方式在3D空间中画一条线?我觉得很可笑的是,VB甚至没有办法轻松地绘制3D线条…

删除屏幕空间线条3D:

            foreach (ScreenSpaceLines3D line3D in lines3DList)
            {
                lines3D.Points.Clear(); // Very importante
                _viewport3D.Children.Remove(lines3D);
             }

我参加聚会有点晚了,但我也有同样的问题

发生访问冲突是因为每个实例都向合成目标的呈现事件注册了一个事件处理程序

public ScreenSpaceLines3D()
{
    ...

    CompositionTarget.Rendering += OnRender; // <-- this line
}

我觉得很可笑.Net也没有一个像样的图表工具。。。但我们无能为力。你考虑过拿起C?):另外,您在
ScrennSpaceLines3D
中有一个打字错误,应该是
Screen
我相信。。。[你使用的库似乎从2007年起就没有更新过…只是说…]好吧,我不学C的两个原因:1.我的计算机课使用VB。2.我宁愿使用C++而不使用C,但是我不能使用任何一个,所以这并不重要。
public ScreenSpaceLines3D()
{
    ...

    // event registration removed
}

private bool AttachedToCompositionTargetRendering { get; set; }

protected override void OnVisualParentChanged(DependencyObject oldParent)
{
    base.OnVisualParentChanged(oldParent);

    var parent = VisualTreeHelper.GetParent(this);

    if (parent == null)
    {
        if (AttachedToCompositionTargetRendering)
        {
            CompositionTarget.Rendering -= OnRender;

            AttachedToCompositionTargetRendering = false;
        }
    }
    else
    {
        if (!AttachedToCompositionTargetRendering)
        {
            CompositionTarget.Rendering += OnRender;

            AttachedToCompositionTargetRendering = true;
        }
    }
}