Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / DataTableReaderListener.cs / 1 / DataTableReaderListener.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.Data.Common; using System.Collections; using System.ComponentModel; internal sealed class DataTableReaderListener { private DataTable currentDataTable = null; private bool isSubscribed = false; private WeakReference readerWeak; internal DataTableReaderListener(DataTableReader reader) { if (reader == null) throw ExceptionBuilder.ArgumentNull("DataTableReader"); if (currentDataTable != null) { UnSubscribeEvents(); } this.readerWeak = new WeakReference(reader); currentDataTable = reader.CurrentDataTable; if (currentDataTable != null) SubscribeEvents(); } internal void CleanUp() { UnSubscribeEvents(); } internal void UpdataTable(DataTable datatable) { if (datatable == null) throw ExceptionBuilder.ArgumentNull("DataTable"); UnSubscribeEvents(); currentDataTable = datatable; SubscribeEvents(); } private void SubscribeEvents() { if (currentDataTable == null) return; if (isSubscribed) return; currentDataTable.Columns.ColumnPropertyChanged += new CollectionChangeEventHandler(SchemaChanged); currentDataTable.Columns.CollectionChanged += new CollectionChangeEventHandler(SchemaChanged); currentDataTable.RowChanged += new DataRowChangeEventHandler(DataChanged ); currentDataTable.RowDeleted += new DataRowChangeEventHandler(DataChanged); currentDataTable.TableCleared += new DataTableClearEventHandler(DataTableCleared); isSubscribed = true; } private void UnSubscribeEvents() { if (currentDataTable == null) return; if (!isSubscribed) return; currentDataTable.Columns.ColumnPropertyChanged -= new CollectionChangeEventHandler(SchemaChanged); currentDataTable.Columns.CollectionChanged -= new CollectionChangeEventHandler(SchemaChanged); currentDataTable.RowChanged -= new DataRowChangeEventHandler(DataChanged ); currentDataTable.RowDeleted -= new DataRowChangeEventHandler(DataChanged); currentDataTable.TableCleared -= new DataTableClearEventHandler(DataTableCleared); isSubscribed = false; } private void DataTableCleared(object sender, DataTableClearEventArgs e) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.DataTableCleared(); } else { UnSubscribeEvents(); } } private void SchemaChanged(object sender, CollectionChangeEventArgs e) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.SchemaChanged(); } else { UnSubscribeEvents(); } } private void DataChanged( object sender, DataRowChangeEventArgs args ) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.DataChanged(args); } else { UnSubscribeEvents(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data { using System; using System.Data.Common; using System.Collections; using System.ComponentModel; internal sealed class DataTableReaderListener { private DataTable currentDataTable = null; private bool isSubscribed = false; private WeakReference readerWeak; internal DataTableReaderListener(DataTableReader reader) { if (reader == null) throw ExceptionBuilder.ArgumentNull("DataTableReader"); if (currentDataTable != null) { UnSubscribeEvents(); } this.readerWeak = new WeakReference(reader); currentDataTable = reader.CurrentDataTable; if (currentDataTable != null) SubscribeEvents(); } internal void CleanUp() { UnSubscribeEvents(); } internal void UpdataTable(DataTable datatable) { if (datatable == null) throw ExceptionBuilder.ArgumentNull("DataTable"); UnSubscribeEvents(); currentDataTable = datatable; SubscribeEvents(); } private void SubscribeEvents() { if (currentDataTable == null) return; if (isSubscribed) return; currentDataTable.Columns.ColumnPropertyChanged += new CollectionChangeEventHandler(SchemaChanged); currentDataTable.Columns.CollectionChanged += new CollectionChangeEventHandler(SchemaChanged); currentDataTable.RowChanged += new DataRowChangeEventHandler(DataChanged ); currentDataTable.RowDeleted += new DataRowChangeEventHandler(DataChanged); currentDataTable.TableCleared += new DataTableClearEventHandler(DataTableCleared); isSubscribed = true; } private void UnSubscribeEvents() { if (currentDataTable == null) return; if (!isSubscribed) return; currentDataTable.Columns.ColumnPropertyChanged -= new CollectionChangeEventHandler(SchemaChanged); currentDataTable.Columns.CollectionChanged -= new CollectionChangeEventHandler(SchemaChanged); currentDataTable.RowChanged -= new DataRowChangeEventHandler(DataChanged ); currentDataTable.RowDeleted -= new DataRowChangeEventHandler(DataChanged); currentDataTable.TableCleared -= new DataTableClearEventHandler(DataTableCleared); isSubscribed = false; } private void DataTableCleared(object sender, DataTableClearEventArgs e) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.DataTableCleared(); } else { UnSubscribeEvents(); } } private void SchemaChanged(object sender, CollectionChangeEventArgs e) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.SchemaChanged(); } else { UnSubscribeEvents(); } } private void DataChanged( object sender, DataRowChangeEventArgs args ) { DataTableReader reader = (DataTableReader) readerWeak.Target; if (reader != null) { reader.DataChanged(args); } else { UnSubscribeEvents(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BrowserDefinitionCollection.cs
- SelectionProviderWrapper.cs
- NamedPermissionSet.cs
- GenerateTemporaryTargetAssembly.cs
- WriteFileContext.cs
- CodeGenerationManager.cs
- BindingNavigator.cs
- InputDevice.cs
- WebHttpSecurityElement.cs
- BinarySecretSecurityToken.cs
- basevalidator.cs
- SqlUDTStorage.cs
- TreeNodeCollection.cs
- WebConfigurationHost.cs
- XamlInt32CollectionSerializer.cs
- AuthorizationSection.cs
- KerberosSecurityTokenProvider.cs
- WebProxyScriptElement.cs
- DataGridViewSortCompareEventArgs.cs
- ViewBase.cs
- NativeMethods.cs
- PeerPresenceInfo.cs
- IIS7WorkerRequest.cs
- ToolStripItemDataObject.cs
- SqlCacheDependencySection.cs
- ChangeTracker.cs
- PassportAuthenticationModule.cs
- SettingsBindableAttribute.cs
- DbQueryCommandTree.cs
- EventListener.cs
- ListViewGroupItemCollection.cs
- LinearQuaternionKeyFrame.cs
- TextElementEnumerator.cs
- MutexSecurity.cs
- AppendHelper.cs
- ColorAnimationUsingKeyFrames.cs
- PlainXmlWriter.cs
- DbDataRecord.cs
- ManagedFilter.cs
- PreservationFileReader.cs
- XmlSchemaAttributeGroupRef.cs
- Oid.cs
- DiagnosticTraceSource.cs
- CacheMode.cs
- OracleInternalConnection.cs
- TrackingExtract.cs
- MediaEntryAttribute.cs
- XPathAxisIterator.cs
- SQLGuidStorage.cs
- IProvider.cs
- HtmlFormParameterWriter.cs
- DeferredElementTreeState.cs
- CompoundFileStreamReference.cs
- ImageInfo.cs
- ImageCollectionCodeDomSerializer.cs
- ScriptComponentDescriptor.cs
- RemotingService.cs
- SurrogateSelector.cs
- IteratorDescriptor.cs
- ToolStripSeparatorRenderEventArgs.cs
- DataBindingValueUIHandler.cs
- SortQuery.cs
- CodeDomSerializer.cs
- DependencyPropertyKind.cs
- Int16.cs
- Tablet.cs
- Attributes.cs
- ProtocolsConfigurationEntry.cs
- HtmlMobileTextWriter.cs
- OdbcPermission.cs
- ActivityBuilder.cs
- SiteMapSection.cs
- COM2Enum.cs
- AffineTransform3D.cs
- WebBrowserNavigatingEventHandler.cs
- MatrixTransform.cs
- CngProperty.cs
- ObjectAnimationUsingKeyFrames.cs
- RuntimeConfig.cs
- GlobalItem.cs
- CanonicalizationDriver.cs
- ActivityStateQuery.cs
- ObjectDataSourceDisposingEventArgs.cs
- ContainerFilterService.cs
- MethodImplAttribute.cs
- VirtualPath.cs
- TypeUtil.cs
- HtmlControlPersistable.cs
- SpecialFolderEnumConverter.cs
- X509Utils.cs
- ErrorTableItemStyle.cs
- RealProxy.cs
- JsonServiceDocumentSerializer.cs
- BasePropertyDescriptor.cs
- MethodSignatureGenerator.cs
- COM2EnumConverter.cs
- HandlerMappingMemo.cs
- WebServiceParameterData.cs
- SoapProtocolImporter.cs
- ObfuscationAttribute.cs