Поделиться через


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 .

mode
MediaCaptureDeviceExclusiveControlReleaseMode

Значение из перечисления MediaCaptureDeviceExclusiveControlReleaseMode , указывающее условия, при которых освобождается монопольный элемент управления.

Возвращаемое значение

Boolean

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();
        }
    }
}

Применяется к