Bagikan melalui


VideoDeviceController.TryAcquireExclusiveControl Metode

Definisi

Meminta kontrol eksklusif kamera dengan ID perangkat yang ditentukan.

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

ID perangkat kamera yang kontrol eksklusifnya diminta. ID perangkat dapat diperoleh dengan kelas DeviceInformation .

mode
MediaCaptureDeviceExclusiveControlReleaseMode

Nilai dari enumerasi MediaCaptureDeviceExclusiveControlReleaseMode yang menentukan kondisi di mana kontrol eksklusif dirilis.

Mengembalikan

Boolean

bool

Benar jika kontrol eksklusif kamera diperoleh; jika tidak, salah.

Persyaratan Windows

Rangkaian perangkat
Windows 11 Insider Preview (diperkenalkan dalam 10.0.23504.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v15.0)

Contoh

Contoh ini menunjukkan bagaimana aplikasi yang menggunakan kamera dalam kontrol eksklusif dapat memastikan bahwa konfigurasi kamera diatur sebelum memulai pengambilan dan tidak akan diubah oleh aplikasi lain yang memiliki akses ke kamera ini dengan memperoleh kunci kontrol eksklusif di depannya.

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

Berlaku untuk