Случайным образом поддерживаются возможности свойств MediaCapture VideoDeviceController

#c# #windows-store-apps #microsoft-metro

#c# #windows-store-приложения #microsoft-metro

Вопрос:

При 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 это true.

Во второй раз (после _captureManager.Dispose() ) приложение выполняет тот же код, но _captureMgr.VideoDeviceController.Brightness.Capabilities.Supported имеет значение false.

Это звучит странно, учитывая тот факт, что во время отладки, если я делаю паузу перед проверкой, вторая попытка тоже работает. Кажется, есть некоторая задержка между проверкой и реальной повторной инициализацией, но Task.Delay(millis) не работает.

Есть ли какая-то проблема в моей логике асинхронности / ожидания?