【问题标题】:WinPhone8 Camera API seems to keep running after dispose callWinPhone8 Camera API 似乎在 dispose 调用后继续运行
【发布时间】:2013-02-18 11:26:11
【问题描述】:

我正面临Camera API 的严重问题,即使我知道在 99.99% 的情况下都不应归咎于框架,但我开始考虑摄像头的方式可能存在问题在 windows phone 中处理。

问题

我的代码很简单,只有两个非常简单的页面:第一个是用于导航到第二个的按钮,它使用相机 API 并在屏幕上呈现预览缓冲区。在第一页上,我还添加了一个带有循环动画的矩形来旋转它,以强制应用程序更新帧速率。

配置文件会话的结果如下:

只要我停留在第一页,帧率计数器就会显示稳定的 60fps。一旦我启动以相机为特色的第二页,由于使用了系统相机,fps 会下降。但是,当我按下后退键时,相机已正确放置,但帧速率有点低(~53 fps)。 更令人印象深刻的是,图表数据显示某些东西仍在运行并损害性能! 内置分析告诉我,系统应用程序使用 47% 的 CPU,与显示相机页面时相同!

这种行为是否有已知原因?

我的代码

我的第二页代码隐藏:

public partial class MyScannerView : PhoneApplicationPage {
    private PhotoCamera camera;

    public MyScannerView() {
        InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e) {
        base.OnNavigatedTo(e);

        camera = new PhotoCamera(CameraType.Primary);
        viewfinderBrush.SetSource(camera);
    }

    protected override void OnNavigatedFrom(NavigationEventArgs e) {
        base.OnNavigatedFrom(e);

        if (camera != null) {
            camera.Dispose();
            camera = null;
        }
    }
}

我的第二页 XAML:

<Canvas x:Name="viewfinderCanvas">
    <Canvas.Background>
        <VideoBrush x:Name="viewfinderBrush">
            <VideoBrush.RelativeTransform>
                <CompositeTransform x:Name="viewfinderTransform" CenterX="0.5" CenterY="0.5" />
            </VideoBrush.RelativeTransform>
        </VideoBrush>
    </Canvas.Background>
</Canvas>

【问题讨论】:

  • 您知道您可以获得更多关于正在运行的内容的详细信息吗?如果您深入研究性能分析器,您可以看到哪个函数调用占用了一定百分比的 CPU 时间。也许它会帮助您识别正在运行的内容。
  • 确实如此。但是,UI 线程只占用了 4.6% 的 CPU,这并不奇怪,因为代码非常基础。有些帧需要很长时间才能绘制,但我只能说“System.Windows.dll:ManagedFunction_0(...)”似乎是罪魁祸首。有东西在后台运行,但我只能这么说。
  • 顺便说一句,WinPhone 是否有某种官方错误跟踪器

标签: c# windows-phone-7 xaml camera windows-phone-8


【解决方案1】:

我在使用相机的应用程序中遇到了类似的问题。 设法通过使用不是 OnNavigatedFrom 而是 OnNavigatingFrom 覆盖并按以下顺序来克服它:

  1. 退订事件
  2. Dispose();
  3. 相机=空;

【讨论】:

  • 谢谢,我会尽快测试并告诉你!
猜你喜欢
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 2017-07-29
  • 2021-03-01
  • 1970-01-01
  • 2023-03-11
  • 2017-09-17
相关资源
最近更新 更多