VideoDeviceController.TryAcquireExclusiveControl Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 .
Um valor da enumeração MediaCaptureDeviceExclusiveControlReleaseMode especificando as condições sob as quais o controle exclusivo é liberado.
Retornos
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();
}
}
}