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
- shaperfactoryquerycachekey.cs
- MatcherBuilder.cs
- DefaultAuthorizationContext.cs
- SQLInt32.cs
- XmlAttribute.cs
- FixedDSBuilder.cs
- PolicyManager.cs
- XhtmlBasicLiteralTextAdapter.cs
- DataMemberFieldEditor.cs
- MailMessage.cs
- BitmapPalettes.cs
- SqlBooleanizer.cs
- ScriptReference.cs
- TypeToken.cs
- LayoutEvent.cs
- FileSystemEnumerable.cs
- CopyOnWriteList.cs
- DBBindings.cs
- AttributeTableBuilder.cs
- VisualTarget.cs
- WpfXamlType.cs
- DataBindingExpressionBuilder.cs
- StringDictionaryCodeDomSerializer.cs
- DesignerSerializationVisibilityAttribute.cs
- BooleanExpr.cs
- EditorAttributeInfo.cs
- StyleCollection.cs
- ImageDrawing.cs
- DataObjectMethodAttribute.cs
- CodeAttributeDeclarationCollection.cs
- HtmlInputControl.cs
- ViewStateModeByIdAttribute.cs
- ReadOnlyDictionary.cs
- AxisAngleRotation3D.cs
- PnrpPeerResolver.cs
- WorkflowNamespace.cs
- ColumnMapCopier.cs
- DataGridViewSelectedRowCollection.cs
- PageTheme.cs
- RoutingChannelExtension.cs
- HtmlImage.cs
- ProcessInputEventArgs.cs
- TimeSpanOrInfiniteConverter.cs
- ReadOnlyDictionary.cs
- Predicate.cs
- CallContext.cs
- TextProviderWrapper.cs
- MouseGesture.cs
- MimeTypeMapper.cs
- QueryOptionExpression.cs
- GZipStream.cs
- ErrorWrapper.cs
- RankException.cs
- RecipientInfo.cs
- PointCollectionConverter.cs
- QueryAccessibilityHelpEvent.cs
- ActiveXHelper.cs
- PerformanceCounterCategory.cs
- BooleanAnimationBase.cs
- CommandPlan.cs
- ModelPropertyDescriptor.cs
- SessionParameter.cs
- ScriptingSectionGroup.cs
- ConfigXmlDocument.cs
- EntityWithChangeTrackerStrategy.cs
- PackUriHelper.cs
- ProfessionalColors.cs
- LoadedEvent.cs
- ScopedKnownTypes.cs
- CodeAccessPermission.cs
- TdsParserSessionPool.cs
- StringStorage.cs
- PackWebResponse.cs
- SyndicationFeed.cs
- Decorator.cs
- PolyLineSegmentFigureLogic.cs
- TextTreeNode.cs
- _OSSOCK.cs
- ValidationRule.cs
- SqlDataSourceStatusEventArgs.cs
- XmlParser.cs
- SqlBooleanizer.cs
- FullTextBreakpoint.cs
- EntityDataSourceContextCreatedEventArgs.cs
- Int64Animation.cs
- MsmqIntegrationBindingCollectionElement.cs
- PaginationProgressEventArgs.cs
- _NetworkingPerfCounters.cs
- StateItem.cs
- DataContext.cs
- XmlMapping.cs
- XsdValidatingReader.cs
- Utils.cs
- DataFieldConverter.cs
- AmbientLight.cs
- GiveFeedbackEventArgs.cs
- MetadataFile.cs
- TextWriterEngine.cs
- Win32PrintDialog.cs
- SettingsProperty.cs