VideoDeviceController.TryAcquireExclusiveControl Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 .
Valor de la enumeración MediaCaptureDeviceExclusiveControlReleaseMode que especifica las condiciones en las que se libera el control exclusivo.
Devoluciones
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();
}
}
}