我想确保当用户离开特定页面时,相机会被丢弃。
要打开相机,我拨打await AudioVideoCaptureDevice.OpenAsync()
。但是,如果在OpenAsync()方法完成之前调用OnNavigatedFrom()方法,则无法丢弃相机,它将保持打开状态。
解决这个问题的正确方法是什么?
答案 0 :(得分:0)
private AudioVideoCaptureDevice _cam;
...
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
_isNavigatingFrom = true;
if (CameraIsRecording)
{
/*
var task = DoStopRecording();
task.Start();
task.Wait();
*/
}
TheMoveJoystick.StopJoystick();
ViewModel.AccelMovement.EnsureAccelerometerIsOnCommand.Execute(false);
ViewModel.Speech.EnsureSpeechIsOn.Execute(false);
ViewModel.AccelMovement.PropertyChanged -= AccelMovementOnPropertyChanged;
_hackTimer.Stop();
if (_cam != null)
{
_cam.Dispose();
_cam = null;
}
_isNavigatingFrom = false;
base.OnNavigatingFrom(e);
}
答案 1 :(得分:0)
我会使用单例或静态管理器类进行此类操作,因此您可以调用该类来初始化相机,并随时关闭它。然后在那里,您可以在该类上保留一个标记,用于说明相机是否被取消,或类似的东西,这样它可以在异步方法后检查,如果相机被取消。
我希望这会有所帮助。