Peter Nelson
Peter Nelson

Reputation:

Memory Leak in WPF

I wrote a very simple newbie app with a 6-sided polyhedron (a "box") which rotates 180 degrees when I click a button. and then rotates back again on the next click. Every rotation grabs another 90MB and it doesn't let go until I close the app. The box is defined in the XAML. The Storyboard, DoubleAnimation and PropertyPath, etc, are all created ONCE, in the constructor. The button code looks like this:

    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);
    }

After a few rotations I'm out of memory! What's going on?

Upvotes: 1

Views: 1329

Answers (1)

cwap
cwap

Reputation: 11267

Could be totally wrong here, but aren't you adding _myDoubleAnimation to _sb.Children on each click, instead of just updating it?

Upvotes: 1

Related Questions