private void OnStateVariableChanged(DvStateVariable variable) { lock (_serverData.SyncObj) { // Unicast event notifications DvService service = variable.ParentService; foreach (EndpointConfiguration config in _serverData.UPnPEndPoints) { foreach (EventSubscription subscription in config.EventSubscriptions) { if (subscription.Service == service && !subscription.IsDisposed) { subscription.StateVariableChanged(variable); } } } // Multicast event notifications if (variable.Multicast) { EventingState eventingState = _serverData.GetMulticastEventKey(variable.ParentService); if (eventingState.EventKey == 0) { // Avoid sending "normal" change events before the initial event was sent return; } eventingState.ModerateChangeEvent(variable); ScheduleMulticastEvents(); } } }