Windows phone 应用程序在导航时越来越慢

Windows phone 应用程序在导航时越来越慢,windows-phone,dispatchertimer,Windows Phone,Dispatchertimer,我正在构建一个Windows Phone应用程序,它在一个页面中进行视频捕获,在另一个页面中有一个自定义播放器。我使用自己的自定义编解码器,因此播放器需要大量的dispatchermer来跟踪UI部分的一些行为,并在编解码器部分以良好的帧率播放电影 我正试图释放所有的dispatchermer,因为我知道它们是CPU密集型的,但即使停止它们,我的应用程序仍然非常慢。如果我按后退,然后跟随水流,速度每次除以2。如果我不使用我的播放器,一切都可以。我的播放器只有3个Dispatchermer、一个文

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

我正试图释放所有的
dispatchermer
,因为我知道它们是CPU密集型的,但即使停止它们,我的应用程序仍然非常慢。如果我按后退,然后跟随水流,速度每次除以2。如果我不使用我的播放器,一切都可以。我的播放器只有3个Dispatchermer、一个文件流和一个图像框

我觉得
dispatchermer
仍在内存中运行,并且是双重实例化的,即使它们直接在页面上实例化为private

我能强迫页面发布所有这些东西吗


实际上,我还不明白导航到当前页面旁边的页面与导航回当前页面之间的区别。我不知道如何在不调用InitializeComponents的情况下再次显示页面,因此我混淆了要释放哪些资源,以及要保留哪些资源的完整性。

我的执行速度问题实际上是由某个正在运行的Dispatcher引起的,因此我将回答并将其存档

解决方案:

  • 确保所有
    dispatchermer
    都已在页面上直接实例化,以便我们可以在代码中的任何位置将其置零

  • 在OnNavigatedFrom中,我杀死
    Dispatchermer
    ,在
    OnNavigatedTo
    中,我使用myDispatcherX=new Dispatchermer()重新创建它们

  • 没有“临时”计时器,例如“
    Dispatchermer MyTestTimer=new Dispatchermer;
    with
    ((Dispatchermer)send).在回调中停止()
    ,因为它可能会保留在我们导航的应用程序的内存中

  • 需要等待48小时。:)我很惊讶使用OnNavigateTo和OnNavigateFrom如此重要。我原以为这是一个解决办法,但微软表示,一旦你导航到某个地方,它就是处理UI元素状态的地方。