微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 当应用程序重新聚焦时重新启动MediaCapture

在使用MediaCapture类( Windows.Media.Capture)显示网络摄像头源的Windows 8应用程序(C#)中,我尝试在应用程序丢失时重新启动预览,然后重新关注(例如,通过单击左上角的屏幕角落到另一个应用程序,然后再次点击返回我的应用程序).

我现在如何尝试重新启动预览:

Application.Current.Resuming += (sender,o) => StartVideo(video);
Application.Current.Suspending += (sender,args) => StopVideo();

internal async void StartVideo(CaptureElement e)
{
    try
    {
        this.stream = new MediaCapture();
        await this.stream.InitializeAsync();
        e.source = this.stream;
        await this.stream.StartPreviewAsync();
    }
    catch
    {
        new MessageDialog("Unable to start the video capture.").ShowAsync();
    }
}

internal async void StopVideo()
{
    try
    {
        await stream.StopPreviewAsync();
    }
    catch { }
}

但是,恢复和暂停事件似乎并没有在我上面描述的示例中触发.这不是“暂停”应用程序吗?如果是这样,我应该注意什么/什么事件?

或者,我应该使用this.stream.StartRecord …方法之一,而不是使用长时间运行的“预览”来显示网络摄像头.

编辑:如果我使用Visual Studio的“挂起/恢复”按钮(在“调试位置”工具栏上)手动触发事件,则该功能可以根据需要运行(视频在应用程序恢复时重新启动).

解决方法

我看到一些错误

>你应该避免异步无效;对事件处理程序以外的所有方法使用async Task.>对于“暂停”等“命令”事件,如果您有异步事件处理程序,请使用args.SuspendingOperation.GetDeferral提供的延迟.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐