在MediaCapture
初始化时,我尝试设置一些属性(对比度,缩放,亮度),但仅限于主机设备支持。
var _captureMgr = new MediaCapture();
await _captureMgr.InitializeAsync(new MediaCaptureInitializationSettings{
VideoDeviceId = devices[currentDevice].Id,
});
await _captureMgr.StartPreviewAsync();
if (_captureMgr.VideoDeviceController.Brightness.Capabilities.Supported)
{
brightnessSlider.Minimum = _captureMgr.VideoDeviceController.Brightness.Capabilities.Min;
brightnessSlider.Maximum = _captureMgr.VideoDeviceController.Brightness.Capabilities.Max;
brightnessSlider.StepFrequency = _captureMgr.VideoDeviceController.Brightness.Capabilities.Step;
brightnessSlider.Value = (brightnessSlider.Minimum + brightnessSlider.Maximum) / 2;
}
首次启动亮度滑块时,实际上_captureMgr.VideoDeviceController.Brightness.Capabilities.Supported
为真。
第二次(_captureManager.Dispose()
之后)应用程序执行相同的代码,但_captureMgr.VideoDeviceController.Brightness.Capabilities.Supported
false 。
考虑到调试时如果我在检查前暂停,第二次尝试也可行,这听起来很奇怪。检查和真正重新初始化之间似乎存在一些延迟,但Task.Delay(millis)
无法正常工作。
我的 async / await 逻辑中是否存在问题?