3

我正在开发一个可以让您与网络摄像头交互的 Metro 应用程序。只有一个问题,当应用程序在后台传递时,网络摄像头会关闭。为了解决这个问题,我使用了这段代码:

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 { }
}

它在调试时工作得很好,但是如果应用程序正常启动,代码会被执行,但是一旦我把应用程序带到前台,网络摄像头就不会再次激活。我怎样才能解决这个问题?

4

1 回答 1

0

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

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

于 2012-09-22T13:50:08.610 回答