Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / DataTableReaderListener.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DirectoryLocalQuery.cs
- XmlEntity.cs
- DecimalConstantAttribute.cs
- PageRequestManager.cs
- Style.cs
- Mouse.cs
- SelectionItemPattern.cs
- DetailsViewUpdateEventArgs.cs
- ColumnHeaderCollectionEditor.cs
- WebZone.cs
- AnimationClockResource.cs
- MissingFieldException.cs
- _ContextAwareResult.cs
- ArrangedElement.cs
- SkipStoryboardToFill.cs
- CopyCodeAction.cs
- NavigatingCancelEventArgs.cs
- CodeIdentifier.cs
- HttpRequest.cs
- TreeBuilderBamlTranslator.cs
- XmlNodeChangedEventArgs.cs
- HwndProxyElementProvider.cs
- LicenseManager.cs
- CodeExpressionStatement.cs
- TextEndOfSegment.cs
- TitleStyle.cs
- PrimitiveXmlSerializers.cs
- ClusterRegistryConfigurationProvider.cs
- BinHexDecoder.cs
- TdsParameterSetter.cs
- SettingsProviderCollection.cs
- WindowShowOrOpenTracker.cs
- SqlDependency.cs
- PlacementWorkspace.cs
- ScriptModule.cs
- MsmqReceiveHelper.cs
- StdValidatorsAndConverters.cs
- OdbcHandle.cs
- ThemeableAttribute.cs
- FloaterParaClient.cs
- FreezableDefaultValueFactory.cs
- HttpApplication.cs
- DbConnectionPoolIdentity.cs
- WbemException.cs
- InputElement.cs
- IntegerFacetDescriptionElement.cs
- TabletCollection.cs
- Popup.cs
- FileNotFoundException.cs
- ConstraintConverter.cs
- BooleanKeyFrameCollection.cs
- ModifiableIteratorCollection.cs
- XsltQilFactory.cs
- GACMembershipCondition.cs
- XmlSchemaIdentityConstraint.cs
- BufferedReadStream.cs
- FontStretch.cs
- Stopwatch.cs
- XPathAncestorQuery.cs
- formatter.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- WebPartHelpVerb.cs
- SymmetricSecurityBindingElement.cs
- ProcessModelInfo.cs
- KeyPullup.cs
- DependencyPropertyDescriptor.cs
- TaskDesigner.cs
- WriteTimeStream.cs
- Debug.cs
- AnimatedTypeHelpers.cs
- Image.cs
- DoubleLinkList.cs
- UTF7Encoding.cs
- EntitySqlQueryCacheKey.cs
- AssemblyCache.cs
- SafeFileMappingHandle.cs
- SrgsDocumentParser.cs
- ServerIdentity.cs
- RegexCaptureCollection.cs
- ColorMatrix.cs
- DataGridTable.cs
- SystemInformation.cs
- MultipleViewPattern.cs
- XmlImplementation.cs
- DataGrid.cs
- Membership.cs
- SecurityDescriptor.cs
- CodeSnippetCompileUnit.cs
- CompositeCollection.cs
- IList.cs
- _NegotiateClient.cs
- EncryptedData.cs
- SqlExpander.cs
- ReaderContextStackData.cs
- UrlPropertyAttribute.cs
- TraceInternal.cs
- XmlSchemaSet.cs
- SoapAttributeAttribute.cs
- XmlSchemaExporter.cs
- MarshalDirectiveException.cs