VideoDeviceController.TryAcquireExclusiveControl Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 .
Valore dell'enumerazione MediaCaptureDeviceExclusiveControlReleaseMode che specifica le condizioni in cui viene rilasciato il controllo esclusivo.
Restituisce
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();
}
}
}