最近,我一直在处理WPF的问题,即当我在WPF页面中使用MediaElement时,该页面已多次初始化,它不会从内存中销毁,或者在处于空白状态时会闪烁黑色背景状态恰好在最终加载之前并在我的自定义销毁中
为此,我在使用MediaElement的每个页面中制作了一个包装器,在构造函数中,创建了一个包装器实例,该包装器将MediaElement添加到其他MediaElement的静态公共数组中并同时保存在该数组中。直到我调用RemoveAll()刷新内存。 那不是问题,但是当我开始使用它时,我注意到它真的很慢。我的视频在1秒钟后加载,并且从未被缓存(甚至没有在使用包装器之前,我都不知道该怎么做),用户可以在开始播放之前以及每当我调用RemoveAll()时看到此黑色背景,一秒钟。
在我的测试示例应用程序中,我的MainWindow包含:
<Grid>
<Frame x:Name="mainFrame"/>
</Grid>
然后有一个TestPage,我可以通过Navigate()使用另一个“默认”页面中的按钮,TestPage是我尝试视频的地方。 TestPage的代码:
<MediaElement Source="video/Test.mp4" Opacity="1" Volume="0" LoadedBehavior="Manual" Height="326" Width="580" x:Name="media"
UnloadedBehavior="Manual" Stretch="Fill"/>
在包装程序中,我订阅了MediaEnded
之类的事件,因此可以在触发media.Play();
时调用MediaEnded
来重复播放视频。
但是我仍然遇到同样的问题,但尚未找到解决方案。 如果有人想办法,也许不是使用MediaElement,我将很感激。