#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)
не работает.
Есть ли какая-то проблема в моей логике асинхронности / ожидания?