【问题标题】:Windows Phone camera crashes app when switching between pages在页面之间切换时 Windows Phone 相机崩溃应用程序
【发布时间】:2014-06-26 17:48:27
【问题描述】:

我正在用 C# 为 Windows Phone 8 创建一个简单的相机应用程序。在主视图上,相机已经初始化。主视图上有一个按钮,可将您带到单独的设置页面。但是,当我按下后退按钮返回带有相机视图的主页面时,应用程序崩溃并且我得到了这个异常:

在 mscorlib.ni.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理

WinRT 信息:无法获取相机。你只能在前台使用这个类。

如果有这个异常的处理程序,程序可以安全地继续。

这是我用来切换到设置页面的代码:

private void Button_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/settings.xaml", UriKind.Relative));
    }

在设置页面上,我只是简单地使用返回按钮返回到主页面,这就是发生崩溃的地方。

这是我用于相机初始化的代码:

protected override async void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        Size resolution = PhotoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back).First();//crashes here
        camera = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Back, resolution);
        video.SetSource(camera);
        previewTransform.Rotation = camera.SensorRotationInDegrees;
    }

调试器说应用程序在该方法的第二行崩溃。

【问题讨论】:

  • 当您导航回主页时执行的代码是什么,因为我猜这就是您的应用程序崩溃的地方。您的设置页面没有问题,您可以正确导航。
  • 它只是使用后退按钮导航回来。后退按钮导航由操作系统自动处理,不需要特定的编码。它确实成功返回主页,但当相机再次尝试加载时崩溃。我将相机代码添加到原始帖子中。
  • 贴出相机初始化代码。还要在页面导航覆盖的方法中发布任何代码
  • 我刚刚发布了相机代码。我没有覆盖任何导航方法以返回主页。我只使用堆栈中的自动后退按钮导航。

标签: c# windows-phone-8 camera


【解决方案1】:

您还需要处置您的相机实例。在托管 PhotoCaptureDevice 对象的页面中:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多