0

我正在构建一个 Windows Phone 应用程序,该应用程序在一个页面中进行视频捕获,并在另一个页面中有一个自定义播放器。我正在使用我自己的自定义编解码器,因此播放器需要大量DispatcherTimer来跟踪 UI 部分的一些行为,并在编解码器部分以良好的帧速率提供电影。

我正在尝试释放所有DispatcherTimer内容,因为我知道它们是 CPU 密集型的,但即使停止它们,我的应用程序仍然很慢。如果我按后退然后顺流,速度每次除以二。如果我不使用我的播放器,一切都可以。我的播放器只有 3 个DispatcherTimer,一个 FileStream 和一个 Image 框。

我觉得它DispatcherTimer 仍然在内存中运行并且是双重实例化的,即使它们直接在页面上被实例化为私有。

我可以强制页面释放所有这些东西吗?

实际上我还不明白导航到当前页面旁边的页面或导航回来之间有什么区别。我不知道 ie 如何在不调用 InitializeComponents 的情况下再次显示页面,所以我对要释放哪些资源以及要保持哪些资源保持不变感到困惑。

4

1 回答 1

1

我的执行速度问题实际上是由一些正在运行的 DispatcherTimer 引起的,所以我会回答它以将其存档。

解决方案:

  1. 确保所有DispatcherTimer内容都直接在页面上实例化,以便我们可以从代码中的任何位置取消它们。

  2. 在 OnNavigatedFrom 中,我杀死了DispatcherTimer和 在 中OnNavigatedTo,我用 myDispatcherX = new DispatcherTimer(); 重新创建它们

  3. 没有“临时”计时器,例如“ DispatcherTimer myTempTimer = new DispatcherTimer;with ((DispatcherTimer)send).Stop() in 回调”,因为它可能会保留在我们导航的应用程序的内存中。

于 2013-06-24T01:04:41.400 回答