private void UnregisterMetaDataEvents(bool updateListeners) { DataTable table = _table; _table = null; if (table != null) { CollectionChangeEventHandler handlerCollection = new CollectionChangeEventHandler(ColumnCollectionChanged); table.Columns.ColumnPropertyChanged -= handlerCollection; table.Columns.CollectionChanged -= handlerCollection; CollectionChangeEventHandler handlerChildRelation = new CollectionChangeEventHandler(ChildRelationCollectionChanged); ((DataRelationCollection.DataTableRelationCollection)(table.ChildRelations)).RelationPropertyChanged -= handlerChildRelation; table.ChildRelations.CollectionChanged -= handlerChildRelation; CollectionChangeEventHandler handlerParentRelation = new CollectionChangeEventHandler(ParentRelationCollectionChanged); ((DataRelationCollection.DataTableRelationCollection)(table.ParentRelations)).RelationPropertyChanged -= handlerParentRelation; table.ParentRelations.CollectionChanged -= handlerParentRelation; if (updateListeners) { List <DataViewListener> listeners = table.GetListeners(); lock (listeners) { listeners.Remove(this); } } } }
private void RegisterListener(DataTable table) { List <DataViewListener> listeners = table.GetListeners(); lock (listeners) { for (int i = listeners.Count - 1; 0 <= i; --i) { DataViewListener listener = listeners[i]; if (!listener._dvWeak.IsAlive) { listeners.RemoveAt(i); listener.CleanUp(false); } } listeners.Add(this); } }
private void RegisterListener(DataTable table) { List<DataViewListener> listeners = table.GetListeners(); lock (listeners) { for (int i = listeners.Count - 1; 0 <= i; --i) { DataViewListener listener = listeners[i]; if (!listener._dvWeak.IsAlive) { listeners.RemoveAt(i); listener.CleanUp(false); } } listeners.Add(this); } }