VideoDeviceController.TryAcquireExclusiveControl Metodo

Definizione

Richiede il controllo esclusivo della fotocamera con l'ID dispositivo specificato.

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

Parametri

deviceId
String

Platform::String

winrt::hstring

ID dispositivo della fotocamera per cui viene richiesto il controllo esclusivo. L'ID dispositivo può essere ottenuto con la classe DeviceInformation .

mode
MediaCaptureDeviceExclusiveControlReleaseMode

Valore dell'enumerazione MediaCaptureDeviceExclusiveControlReleaseMode che specifica le condizioni in cui viene rilasciato il controllo esclusivo.

Restituisce

Boolean

bool

True se è stato acquisito il controllo esclusivo della fotocamera; in caso contrario, false.

Requisiti Windows

Famiglia di dispositivi
Windows 11 Insider Preview (è stato introdotto in 10.0.23504.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v15.0)

Esempio

In questo esempio viene illustrato come un'applicazione che usa la fotocamera nel controllo esclusivo possa garantire che la configurazione della fotocamera sia impostata prima dell'inizio dell'acquisizione e non venga modificata da un'altra applicazione che ha accesso a questa fotocamera acquisendo il blocco esclusivo del controllo prima di esso.

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

Si applica a