Partage via


VideoDeviceController.TryAcquireExclusiveControl Méthode

Définition

Demande le contrôle exclusif de la caméra avec l’ID d’appareil spécifié.

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

Paramètres

deviceId
String

Platform::String

winrt::hstring

ID de l’appareil photo pour lequel le contrôle exclusif est demandé. L’ID d’appareil peut être obtenu avec la classe DeviceInformation .

mode
MediaCaptureDeviceExclusiveControlReleaseMode

Valeur de l’énumération MediaCaptureDeviceExclusiveControlReleaseMode spécifiant les conditions dans lesquelles le contrôle exclusif est libéré.

Retours

Boolean

bool

True si le contrôle exclusif de la caméra a été acquis ; sinon, false.

Configuration requise pour Windows

Famille d’appareils
Windows 11 Insider Preview (introduit dans 10.0.23504.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v15.0)

Exemples

Cet exemple montre comment une application utilisant une caméra en contrôle exclusif peut s’assurer que la configuration de la caméra est définie avant le début de la capture et qu’elle ne sera pas modifiée par une autre application qui a accès à cette caméra en acquérant le verrou de contrôle exclusif avant celle-ci.

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

S’applique à