VideoDeviceController.TryAcquireExclusiveControl Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Запрашивает монопольное управление камерой с указанным идентификатором устройства.
public:
virtual bool TryAcquireExclusiveControl(Platform::String ^ deviceId, MediaCaptureDeviceExclusiveControlReleaseMode mode) = TryAcquireExclusiveControl;
bool TryAcquireExclusiveControl(winrt::hstring const& deviceId, MediaCaptureDeviceExclusiveControlReleaseMode const& mode);
public bool TryAcquireExclusiveControl(string deviceId, MediaCaptureDeviceExclusiveControlReleaseMode mode);
function tryAcquireExclusiveControl(deviceId, mode)
Public Function TryAcquireExclusiveControl (deviceId As String, mode As MediaCaptureDeviceExclusiveControlReleaseMode) As Boolean
Параметры
- deviceId
-
String
Platform::String
winrt::hstring
Идентификатор устройства камеры, для которой запрашивается монопольное управление. Идентификатор устройства можно получить с помощью класса DeviceInformation .
Значение из перечисления MediaCaptureDeviceExclusiveControlReleaseMode , указывающее условия, при которых освобождается монопольный элемент управления.
Возвращаемое значение
bool
Значение true, если был получен монопольный контроль над камерой; в противном случае — false.
Требования к Windows
Семейство устройств |
Windows 11 Insider Preview (появилось в 10.0.23504.0)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v15.0)
|
Примеры
В этом примере показано, как приложение, использующее камеру в режиме монопольного управления, может гарантировать, что конфигурация камеры задается перед началом захвата и не будет изменена другим приложением, которое имеет доступ к этой камере, получив перед ней монопольную блокировку управления.
private static System.Threading.ManualResetEvent _exclusiveLockAcquire = new System.Threading.ManualResetEvent(false);
public static void RecordVideo()
{
MediaCapture mediacapture = new MediaCapture();
await mediacapture.InitializeAsync();
mediacapture.CaptureDeviceExclusiveControlStatusChanged +=
Mediacapture_CaptureDeviceExclusiveControlStatusChanged;
_exclusiveLockAcquire.WaitOne();
_exclusiveLockAcquire.Reset();
// configure camera - blocking other application from changing the configuration.
// record video
}
private static void Mediacapture_CaptureDeviceExclusiveControlStatusChanged(MediaCapture sender, MediaCaptureDeviceExclusiveControlStatusChangedEventArgs args)
{
if (args.Status == MediaCaptureDeviceExclusiveControlStatus.ExclusiveControlAvailable)
{
if (sender.VideoDeviceController().TryAcquireExclusiveControl(
args.DeviceId(),
MediaCaptureDeviceExclusiveControlReleaseMode.OnAllStreamsStopped))
{
_exclusiveLockAcquire.Set();
}
}
}