请考虑这个简单的功能:
public void BeginFade()
{
var fade = new DoubleAnimation(0d, TimeSpan.FromSeconds(1));
fade.Completed += Fade_Completed;
grid.BeginAnimation(OpacityProperty, fade);
}
var fade
的范围是函数BeginFade
,据我所知,当DoubleAnimation
类完成其任务时,框架将自动清除资源。
这是对的吗?
那么事件处理程序呢?当我多次拨打BeginFade()
时,事件Completed
会发生什么?
这个例子只是为了更好地理解潜在的行为。当然,我可以将fade
声明为类成员,并在构造函数中设置事件Completed
...
答案 0 :(得分:2)
因此,fade
已传递给BeginAnimation
,这意味着您无法知道何时将其处理掉。但我认为在这种情况下,你的猜测是正确的。
每次调用BeginFade
,您都会创建新的fade
对象,然后Fade_Completed
事件处理程序会订阅其Completed
事件。因此,您的fade
动画中的每一个都只有一个Fade_Completed
订阅。这不会阻止fade
对象被垃圾收集,如果这是你要求的。