private void ReleaseCom()
        {
            if (_asyncRequestManager != null)
            {
                _asyncRequestManager.Dispose();
                _asyncRequestManager = null;
            }

            try
            {
                if (ComObject != null)
                {
                    ComObject.ReleaseComServer();
                    ComObject = null;
                }
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Failed to release COM object of '{0}' group.", ex, Name);
            }

            try
            {
                OnDestroyed();
            }
            catch (Exception ex)
            {
                Log.ErrorFormat("Destroy event of group '{0}' throws exception .", ex, Name);
            }
        }
 internal OpcDaGroup(object groupComObject, OpcDaServer opcDaServer)
 {
     ComObject = groupComObject;
     Server    = opcDaServer;
     SyncState();
     _asyncRequestManager = new AsyncRequestManager(this);
     _asyncRequestManager.NewItemValues += values => OnValuesChanged(new OpcDaItemValuesChangedEventArgs(values));
 }