我正在用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;
}
调试器说该应用程序在该方法的第二行崩溃。
答案 0 :(得分:1)
您还需要处理相机实例。在托管PhotoCaptureDevice对象的页面中:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
camera.Dispose();
}