VideoDeviceController.TryAcquireExclusiveControl Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.
Ein Wert aus der MediaCaptureDeviceExclusiveControlReleaseMode-Enumeration , die die Bedingungen angibt, unter denen die exklusive Steuerung freigegeben wird.
Gibt zurück
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();
}
}
}