WPF Windows-XP SP3
我遇到了一个简单的WPF动画问题。
我使用以下Xaml代码(在XamlPad中以及在WPF项目中):
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Border Name="MyBorder" BorderThickness="10" BorderBrush="Blue" CornerRadius="10" Background="DarkRed" >
<Rectangle Name="MyRectangle" Margin="10" StrokeDashArray="2.0,1.0" StrokeThickness="10" RadiusX="10" RadiusY="10" Stroke="Black" StrokeDashOffset="0">
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="MyRectangle" Storyboard.TargetProperty="StrokeDashOffset" From="0.0" To="3.0" Duration="0:0:1" RepeatBehavior="Forever" Timeline.DesiredFrameRate="30" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
</Rectangle>
</Border>
</Page>
它具有使边框围绕矩形设置动画的效果。重新启动机器后,此动画非常流畅。但是,我倾向于一直打开我的机器,经过一段时间后(我不知道有多长时间),动画开始出现口吃并变得不稳定。
我认为这可能是内存或资源问题,但在关闭所有其他应用程序和任何看似不必要的服务后,口吃仍然继续。但是,系统重启后,动画再次平滑!
我在WPF应用程序或XamlPad中遇到相同的症状。在应用程序的情况下,无论是在调试器中运行还是直接运行可执行文件,似乎没有任何区别。
我在这个链接上应用了补丁:http://support.microsoft.com/kb/981741我认为它已经解决了这个问题,但似乎没有。
我看过一些帖子可能表明使用透明度可能会影响动画,但正如您所见,我的xaml不使用透明度。
任何人都可以就如何确定问题给出一些建议吗?是否有可能有帮助的WPF诊断工具?
更新:我检查了我的视频驱动程序,它们是最新版本。 (nVidia GeForce 8400 GS)
答案 0 :(得分:2)
运行动画一天多一点之后,虽然内存使用量有所增加,但我看不到任何真正可怕的事情。
我最终做的是在kaxaml上运行XP SP3上的示例,然后使用perfmon进行一些穷人的性能检查。
如果你以前没有使用过perfmon,那就去做Run - &gt;从开始菜单中选择。它可能会在列表中找到一些计数器,但如果您不想监视这些值,可以单击每个计数器并将其删除。我不认为你的情况下的CPU利用率是问题,但你可以保留它以防万一。
右键单击任意位置并选择“添加计数器”,然后在“性能对象”下选择“.NET CLR内存”。在右侧,选择感兴趣的可执行文件(在我的例子中,它是“Kaxaml”)。在左侧,选择“所有堆中的#字节”。我还会将采样率更改为更大的值,例如300秒,这样您就可以更好地了解在经历减速的时间段内的变化率。
这可能无法帮助您找到减速,但这是合理的第一步。也许你也应该下载ANTS 5分析器的试用版,看它是否有任何奇怪的东西。
答案 1 :(得分:1)
我让这个动画运行了30多个小时并没有减速或变得不稳定,但我正在运行Win 7.我让它在XP VM中运行了几个小时也运行良好。
我最好的猜测:视频驱动程序
理由:视频驱动程序是系统中最复杂的驱动程序,与计算机的整体性能有很大关系。虽然动画调度计时器可能落后,但除非你使用大量的CPU,否则它不太可能。
建议:
答案 2 :(得分:0)
我认为使用WPF会遇到效果不佳的机器。我在我的笔记本电脑上试过这个,很好。
答案 3 :(得分:0)
您是否打开任何互联网浏览器?我有一个类似的问题,我正在运行的动画,它是波涛汹涌的...没有什么真可怕的,它只是引人注目和讨厌,就像每隔半秒左右就会出现微型口吃......
在预感中,我关闭了谷歌浏览器,我已经打开了,口吃完全解决了。如果您在运行任何Web浏览器时打开它,请尝试关闭它们并查看它是否有帮助,它对我有用。