VideoDeviceController.TryAcquireExclusiveControl Método

Definición

Solicita el control exclusivo de la cámara con el identificador de dispositivo especificado.

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

Parámetros

deviceId
String

Platform::String

winrt::hstring

Identificador del dispositivo de la cámara para la que se solicita el control exclusivo. El identificador de dispositivo se puede obtener con la clase DeviceInformation .

mode
MediaCaptureDeviceExclusiveControlReleaseMode

Valor de la enumeración MediaCaptureDeviceExclusiveControlReleaseMode que especifica las condiciones en las que se libera el control exclusivo.

Devoluciones

Boolean

bool

True si se adquirió el control exclusivo de la cámara; de lo contrario, false.

Requisitos de Windows

Familia de dispositivos
Windows 11 Insider Preview (se introdujo en la versión 10.0.23504.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v15.0)

Ejemplos

En este ejemplo se muestra cómo una aplicación que usa la cámara en el control exclusivo puede asegurarse de que la configuración de la cámara se establece antes del inicio de la captura y otra aplicación que tiene acceso a esta cámara mediante la adquisición del bloqueo de control exclusivo delante de ella.

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

Se aplica a