public SystemEventNotifcationClient(Func <IMultimediaDeviceEnumerator> enumerator) { _deviceStateChanged = new Broadcaster <DeviceStateChangedArgs>(); _deviceAdded = new Broadcaster <DeviceAddedArgs>(); _deviceRemoved = new Broadcaster <DeviceRemovedArgs>(); _defaultDeviceChanged = new Broadcaster <DefaultChangedArgs>(); _propertyChanged = new Broadcaster <PropertyChangedArgs>(); _innerClient = new ComMultimediaNotificationClient(this); _innerClient.RegisterEvents(enumerator); }
public void Dispose() { if (_isDisposed) { return; } _innerClient.Unregister(); _deviceStateChanged.Dispose(); _deviceAdded.Dispose(); _deviceRemoved.Dispose(); _defaultDeviceChanged.Dispose(); _propertyChanged.Dispose(); _innerClient = null; _isDisposed = true; }