/// <summary> /// Sets up a callback that is invoked whenever a new RealSense device is connected /// or an existing device is disconnected. /// </summary> /// <param name="callback">The function to be called whenever a device is connected or disconnected.</param> public void SetDevicesChangedCallback(DevicesChangedCallback callback) { if (callback == null) { throw new ArgumentNullException(nameof(callback)); } devicesChangedCallback = (removedListPtr, addedListPtr, user) => { var removedList = new DeviceListHandle(removedListPtr); var addedList = new DeviceListHandle(addedListPtr); using (var removed = new DeviceCollection(removedList)) using (var added = new DeviceCollection(addedList)) { callback(removed, added); } }; NativeMethods.rs2_set_devices_changed_callback(handle, devicesChangedCallback, IntPtr.Zero, out IntPtr error); NativeHelper.ThrowExceptionForRsError(error); }
internal DeviceCollection(DeviceListHandle deviceList) { handle = deviceList ?? throw new ArgumentNullException(nameof(deviceList)); }