Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF中的内存泄漏_Wpf_Memory Leaks_3d - Fatal编程技术网

WPF中的内存泄漏

WPF中的内存泄漏,wpf,memory-leaks,3d,Wpf,Memory Leaks,3d,我写了一个非常简单的新手应用程序,有一个6面多面体(一个“盒子”),当我点击一个按钮时,它会旋转180度。然后在下一次单击时再次旋转。每次旋转都会占用另外90MB的空间,直到我关闭应用程序它才会释放。该框在XAML中定义。情节提要、双动画和属性路径等都在构造函数中创建一次。按钮代码如下所示: private void button_Storyboard1_Click(object sender, RoutedEventArgs e) { GC.Collect();

我写了一个非常简单的新手应用程序,有一个6面多面体(一个“盒子”),当我点击一个按钮时,它会旋转180度。然后在下一次单击时再次旋转。每次旋转都会占用另外90MB的空间,直到我关闭应用程序它才会释放。该框在XAML中定义。
情节提要
双动画
属性路径
等都在构造函数中创建一次。按钮代码如下所示:

    private void button_Storyboard1_Click(object sender, RoutedEventArgs e)
    {
        GC.Collect();

        if (_bFront)
        {
            _myDoubleAnimation.From = 0;
            _myDoubleAnimation.To = 180;
            _bFront = false;
        }
        else
        {
            _myDoubleAnimation.From = 180;
            _myDoubleAnimation.To = 0;
            _bFront = true;
        }
        _myDoubleAnimation.Duration = _Duration;
        Storyboard.SetTargetName(_myDoubleAnimation, "rotate_me");
        Storyboard.SetTargetProperty(_myDoubleAnimation, _PropP);
        _sb.Children.Add(_myDoubleAnimation);
        _sb.Begin(this.viewport3D1);
    }

转了几圈后,我的记忆就没有了!发生了什么事?

这里可能完全错误,但是你不是在每次单击时都将“myDoubleAnimation”添加到“sb.Children”中,而不是仅仅更新它吗?

这里可能完全错误,但你不是在每次单击时都将“myDoubleAnimation”添加到“sb.Children”中吗,与其只是更新它,不如告诉我这是什么gfx卡好吗?请告诉我这是什么gfx卡好吗?我昨天晚上想了想,试着做了些什么?孩子们,明白了吗;在Add()之前,没有任何效果。我没有看到一个叫做“更新”的方法——你是什么意思?(对不起,我是wpf新手)gfx卡是ATi Radeon X300,它说它支持DirectX 9.0ah-HAA!但无论如何,你是对的!当我将添加移动到C'Tor(因此我只添加一次)时,仍然可以识别动画的更改(到…和从…),但不再有内存泄漏!非常感谢。我仍然不明白为什么孩子们的清理没有帮助。不,听起来很奇怪:)我希望孩子们的清理也能修复漏洞:)我昨晚想了想,试着做孩子们的清理;在Add()之前,没有任何效果。我没有看到一个叫做“更新”的方法——你是什么意思?(对不起,我是wpf新手)gfx卡是ATi Radeon X300,它说它支持DirectX 9.0ah-HAA!但无论如何,你是对的!当我将添加移动到C'Tor(因此我只添加一次)时,仍然可以识别动画的更改(到…和从…),但不再有内存泄漏!非常感谢。我仍然不明白为什么_sb.Children.Clear()没有帮助。不,听起来很奇怪:)我希望_sb.Children.Clear()也能修复漏洞:)