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
- SiblingIterators.cs
- Exceptions.cs
- PropertyPathConverter.cs
- VBCodeProvider.cs
- HostingEnvironment.cs
- UpdateRecord.cs
- DataRecordInternal.cs
- MailWriter.cs
- DBCommandBuilder.cs
- SmtpNetworkElement.cs
- TileModeValidation.cs
- ResourcesBuildProvider.cs
- CacheModeValueSerializer.cs
- SimplePropertyEntry.cs
- RepeaterItem.cs
- NetworkAddressChange.cs
- EventLogPermissionEntryCollection.cs
- KeyEventArgs.cs
- PhysicalAddress.cs
- FontNamesConverter.cs
- DataGridColumnCollection.cs
- DrawListViewItemEventArgs.cs
- IndexOutOfRangeException.cs
- RequestSecurityTokenForRemoteTokenFactory.cs
- DivideByZeroException.cs
- HelpInfo.cs
- ProfilePropertySettingsCollection.cs
- SafeHandle.cs
- bidPrivateBase.cs
- WindowsPen.cs
- ObjectStateManager.cs
- Verify.cs
- _TLSstream.cs
- VarRefManager.cs
- CharacterString.cs
- TemplatePropertyEntry.cs
- Bits.cs
- Facet.cs
- HScrollBar.cs
- DataGridViewControlCollection.cs
- ReceiveContextCollection.cs
- SoundPlayer.cs
- DataListItem.cs
- JsonWriterDelegator.cs
- SapiInterop.cs
- AVElementHelper.cs
- FrameworkElementFactory.cs
- HWStack.cs
- ListViewItemSelectionChangedEvent.cs
- CollectionViewGroupInternal.cs
- processwaithandle.cs
- SystemResourceKey.cs
- WebBrowserNavigatedEventHandler.cs
- DoubleCollectionConverter.cs
- HtmlInputImage.cs
- SchemaTypeEmitter.cs
- InputLanguageProfileNotifySink.cs
- PopupRoot.cs
- CompiledIdentityConstraint.cs
- CommandHelpers.cs
- AnimationStorage.cs
- ExecutionTracker.cs
- ServerValidateEventArgs.cs
- CreateParams.cs
- TypedDatasetGenerator.cs
- ExpressionTextBox.xaml.cs
- AutoGeneratedField.cs
- ConfigurationManager.cs
- ToolStripControlHost.cs
- MouseActionValueSerializer.cs
- ObjectFullSpanRewriter.cs
- WebFormDesignerActionService.cs
- GPPOINTF.cs
- AstTree.cs
- Matrix3D.cs
- UIElementHelper.cs
- DescendantBaseQuery.cs
- HebrewCalendar.cs
- WeakReferenceEnumerator.cs
- FrameworkReadOnlyPropertyMetadata.cs
- StorageComplexPropertyMapping.cs
- DiagnosticStrings.cs
- ApplicationSecurityInfo.cs
- HttpCachePolicyElement.cs
- TextFormatterContext.cs
- XmlReaderSettings.cs
- SecurityContext.cs
- ServiceOperationParameter.cs
- SourceItem.cs
- returneventsaver.cs
- SequentialOutput.cs
- FixUp.cs
- FormsAuthentication.cs
- ContentDesigner.cs
- ListViewSortEventArgs.cs
- SiteMapHierarchicalDataSourceView.cs
- BoolExpr.cs
- SlipBehavior.cs
- ErrorTolerantObjectWriter.cs
- pingexception.cs