应用程序在WinRT中暂停后恢复CaptureElement

时间:2012-09-22 12:36:34

标签: c# windows-8 microsoft-metro windows-runtime webcam

我正在开发一个可让您与网络摄像头互动的城域应用程序。只有一个问题,当应用程序在后台传递时,网络摄像头将关闭。要解决此问题,我使用了以下代码:

Window.Current.VisibilityChanged += Current_VisibilityChanged;

async void Current_VisibilityChanged(object sender, Windows.UI.Core.VisibilityChangedEventArgs e)
{
    try
    {
        if (e.Visible)
            await mediaCaptureMgr.StartPreviewAsync();
        else
            await mediaCaptureMgr.StopPreviewAsync();
    }
    catch { }
}

在调试时它可以正常工作,但是如果应用程序正常启动,则会执行代码,但是一旦我将应用程序置于前台,网络摄像头就不会再次激活。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

代码在调试模式下运行,因为您的应用程序永远不会真正暂停。正常执行时,应用程序将暂停,然后在正常流程生命周期中恢复。从暂停更改为恢复不会触发VisibilityChanged事件。如果在调试时使用Visual Studio中的Suspend / Resume按钮,您应该会看到代码在正常执行期间失败。

您需要将代码移到 App.xaml.cs 中的OnLaunched方法中。请注意,您需要考虑可能被终止的应用程序并且需要重新初始化整个媒体捕获器对象。