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)); }