VideoDeviceController.TryAcquireExclusiveControl Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 .
Valeur de l’énumération MediaCaptureDeviceExclusiveControlReleaseMode spécifiant les conditions dans lesquelles le contrôle exclusif est libéré.
Retours
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();
}
}
}