恢复和暂停WinRT相机应用程序

时间:2015-06-01 13:03:52

标签: c# windows-phone runtime resume suspend

我有一个包含三个页面的应用:MainPagePage2Page3。在MainPage我有我的相机,在Page2我有来自MainPage的扫描的历史记录,而我的Page3有关于该应用的一些信息。我的问题是当我暂停和恢复时。它暂停了,但是当我按下Visual Studio LifeStyle Events上的恢复按钮时,我收到以下错误A remote operation is taken longer then expected。正如您所看到的,我的应用程序需要很长时间才能恢复。

在我的App.xaml.cs我有这个OnSuspending方法:

public App()
{
    this.InitializeComponent();
    this.Suspending += this.OnSuspending;
}

private void OnSuspending(object sender, SuspendingEventArgs e)
{
    var deferral = e.SuspendingOperation.GetDeferral();
     deferral.Complete();
}

在我的MainPage我有这个恢复方法:

public MainPage()
{
    this.InitializeComponent();
    Application.Current.Resuming += App_resuming;
}

async void App_resuming(object sender, object 
{
    if (Frame.Content == this)
    await InitializeCamera();
}

我想在暂停应用程序时必须丢弃相机,所以我在MainPage处创建了一个暂停方法,我在那里处理了相机

void App_suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e)
{
   _mediaCapture.Dispose();
}

所以,重新提出我的问题:我在做什么是对的?我错过了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

当我没有将相机对象暂停时,我可以重现你的问题,你说你已经尝试但仍需要更长的时间。我可以建议你检查相机对象,如果它真的被处置。要确保您可以在OnSuspend中添加以下代码行:

await cameraCapture.StopPreview();
cameraCapture.Dispose();
cameraCapture = null;

并在初始化相机之前恢复,再次创建对象。