Freigeben über


VideoDeviceController.TryAcquireExclusiveControl Methode

Definition

Fordert die exklusive Steuerung der Kamera mit der angegebenen Geräte-ID an.

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

Parameter

deviceId
String

Platform::String

winrt::hstring

Die Geräte-ID der Kamera, für die eine exklusive Steuerung angefordert wird. Die Geräte-ID kann mit der DeviceInformation-Klasse abgerufen werden.

mode
MediaCaptureDeviceExclusiveControlReleaseMode

Ein Wert aus der MediaCaptureDeviceExclusiveControlReleaseMode-Enumeration , die die Bedingungen angibt, unter denen die exklusive Steuerung freigegeben wird.

Gibt zurück

Boolean

bool

True, wenn die ausschließliche Kontrolle über die Kamera erworben wurde; Andernfalls false.

Windows-Anforderungen

Gerätefamilie
Windows 11 Insider Preview (eingeführt in 10.0.23504.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v15.0)

Beispiele

In diesem Beispiel wird veranschaulicht, wie eine Anwendung, die eine Kamera in exklusiver Steuerung verwendet, sicherstellen kann, dass die Kamerakonfiguration vor Beginn der Aufnahme festgelegt wird und nicht von einer anderen Anwendung, die Zugriff auf diese Kamera hat, geändert wird, indem sie die exklusive Kontrollsperre vor ihr erhält.

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

Gilt für: