0
我有一个故事板,我需要在整个程序中启动和停止。故事板作为本地变量和实例字段
private void beginStoryBoard()
{
UserControl loadingAnimation = Application.Current.MainWindow.FindResource("loadingAnimation") as UserControl;
Storyboard storyboard = loadingAnimation.FindResource("ProgressAnimation") as Storyboard;
storyboard.Begin();
}
private void stopStoryBoard()
{
UserControl loadingAnimation = Application.Current.MainWindow.FindResource("loadingAnimation") as UserControl;
Storyboard storyboard = loadingAnimation.FindResource("ProgressAnimation") as Storyboard;
storyboard.Stop();
}
是更好地保持故事板作为每个方法的局部变量: 因为它只有在两种方法中使用?或者我应该创建一个私人实例字段?以下是我认为的优点/缺点(如果需要,请纠正我),哪种情况最好?
With a local var: Pro: the var gets scraped once the method completes Con: extra methods need to be called each time With an instnace field: Pro: FindResource() method needs to be called only once Con: The instance field will take up memory throughout the life of the application
我明白你的意思了。 因此,无论如何,故事板对象都存在,创建一个局部变量并指向它并不会在内存方面产生差异,因为它只是一个指针。 那么内存方面哪个更好呢,还是两者差别很大? 在速度方面哪个更好?当然,使用实例字段会更快,因为在每次调用开始/结束storyboard()时都不需要调用FindResource()方法(两次)? –
@Backwards_Dave,但'FindResource'是一个哈希查找 - 这就像你可以得到的一样快。所以肯定的是,也许有点慢,但并不像你在每一个渲染框架中调用它,因为小的差异真的很重要。所以真正的差异是微不足道的 - 从代码可读性/维护角度来看,最好做任何事情。 – McGarnagle