c# – 当应用程序重新聚焦时重新启动MediaCapture
发布时间:2020-12-15 21:46:22 所属栏目:百科 来源:网络整理
导读:在使用MediaCapture类( Windows.Media.Capture)显示网络摄像头源的Windows 8应用程序(C#)中,我尝试在应用程序丢失时重新启动预览,然后重新关注(例如,通过单击左上角的屏幕角落到另一个应用程序,然后再次点击返回我的应用程序). 我现在如何尝试重新启动预览:
在使用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提供的延迟. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |