Compartilhar via


VideoDeviceController.TryAcquireExclusiveControl Método

Definição

Solicita o controle exclusivo da câmera com a ID do dispositivo especificada.

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

A ID do dispositivo da câmera para a qual o controle exclusivo é solicitado. A ID do dispositivo pode ser obtida com a classe DeviceInformation .

mode
MediaCaptureDeviceExclusiveControlReleaseMode

Um valor da enumeração MediaCaptureDeviceExclusiveControlReleaseMode especificando as condições sob as quais o controle exclusivo é liberado.

Retornos

Boolean

bool

True se o controle exclusivo da câmera foi adquirido; caso contrário, false.

Requisitos do Windows

Família de dispositivos
Windows 11 Insider Preview (introduzida na 10.0.23504.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v15.0)

Exemplos

Este exemplo demonstra como um aplicativo que usa a câmera no controle exclusivo pode garantir que a configuração da câmera seja definida antes do início da captura e não será alterada por outro aplicativo que tenha acesso a essa câmera adquirindo o bloqueio de controle exclusivo antes dela.

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

Aplica-se a