Opc.Ua.Server.SamplingGroup.ApplyChanges C# (CSharp) Method

ApplyChanges() public method

Updates the group by apply any pending changes.
public ApplyChanges ( ) : bool
return bool
        public bool ApplyChanges()
        {
            lock (m_lock)
            {
                // add items.
                List<ISampledDataChangeMonitoredItem> itemsToSample = new List<ISampledDataChangeMonitoredItem>();

                for (int ii = 0; ii < m_itemsToAdd.Count; ii++)
                {
                    ISampledDataChangeMonitoredItem monitoredItem = m_itemsToAdd[ii];

                    if (!m_items.ContainsKey(monitoredItem.Id))
                    {
                        m_items.Add(monitoredItem.Id, monitoredItem);
                        
                        if (monitoredItem.MonitoringMode != MonitoringMode.Disabled)
                        {
                            itemsToSample.Add(monitoredItem);
                        }
                    }
                }

                m_itemsToAdd.Clear();

                // collect first sample.
                if (itemsToSample.Count > 0)
                {
                    ThreadPool.QueueUserWorkItem(DoSample, itemsToSample);
                }
                                
                // remove items.
                for (int ii = 0; ii < m_itemsToRemove.Count; ii++)
                {
                    m_items.Remove(m_itemsToRemove[ii].Id);
                }

                m_itemsToRemove.Clear();

                // start the group if it is not running.
                if (m_items.Count > 0 && m_samplingThread == null)
                {
                    Startup();
                }
                    
                // stop the group if it is running.
                else if (m_items.Count == 0 && m_samplingThread != null)
                {
                    Shutdown();
                }
                
                // can be shutdown if no items left.
                return m_items.Count == 0;
            }   
        }
        #endregion