wpf碰撞后运动问题,程序停止运行

两个小球碰撞之后,被撞的小球运动代码如下,但是在运行中,两个小球碰撞之后程序停止运行,下面的代码有什么问题吗?

public void CollionPMoveStop()
{
CollionP.Name

= "CollionP";
this.RegisterName(CollionP.Name

, CollionP);

        Thickness th = CollionP.Margin;
        double dx = 0;
        double dy = 0;
        double Left = CollionP.Margin.Left;
        double Top = CollionP.Margin.Top;
        double t1 = Math.Abs(xVelocity) / Acceleration;
        double t2 = Math.Abs(yVelocity) / Acceleration;
        double t;
        if (t1 > t2)
            t = t1;
        else
            t = t2;

        ThicknessAnimationUsingKeyFrames myThicknessAnimation =
            new ThicknessAnimationUsingKeyFrames();
        myThicknessAnimation.KeyFrames = new ThicknessKeyFrameCollection();

        while (Math.Abs(xVelocity)!=0  || Math.Abs(yVelocity)!=0)
        {
            if (CollionP.Margin.Left < PhysicsPaper.ActualWidth - 50  && CollionP.Margin.Left>50  && CollionP.Margin.Top>50 && CollionP.Margin.Top<PhysicsPaper.ActualHeight-50)
            {
                dx += xVelocity * 30 / 1000;
                dy += yVelocity * 30 / 1000;
                myThicknessAnimation.KeyFrames.Add(new LinearThicknessKeyFrame
                    (new Thickness(Left + dx, Top+dy, PhysicsPaper.ActualWidth - Left - dx - CollionP.Width, PhysicsPaper.ActualHeight - Top - dy - CollionP.ActualHeight)));

                if(xVelocity>0)
                    xVelocity -= Acceleration * 30 / 1000; 
                else if (xVelocity < 0)
                    xVelocity += Acceleration * 30 / 1000;
                if (yVelocity > 0)
                    yVelocity -= Acceleration * 30 / 1000;
                else if (yVelocity < 0)
                    yVelocity += Acceleration * 30 / 1000;

            }
            else    
                break;


        }
        MouseLDown = false;

        myThicknessAnimation.Duration = new Duration(TimeSpan.FromSeconds(t));

        myStoryboard = new Storyboard();
        myStoryboard.Children.Add(myThicknessAnimation);
        Storyboard.SetTargetName(myThicknessAnimation, CollionP.Name 

);
Storyboard.SetTargetProperty(myThicknessAnimation, new PropertyPath(Ellipse.MarginProperty));
myStoryboard.Begin(this);
}

要处理两个检测两个物体的碰撞,然后把结果反馈给被碰撞的对象

要处理两个检测两个物体的碰撞,然后把结果反馈给被碰撞的对象

要处理两个检测两个物体的碰撞,然后把结果反馈给被碰撞的对象

就是要处理两个检测两个物体的碰撞,然后把结果反馈给被碰撞的对象