Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- Model3DGroup.cs
- TemplatePagerField.cs
- KeyEventArgs.cs
- MetadataSource.cs
- UrlPath.cs
- DataGridViewCellFormattingEventArgs.cs
- CompilerGeneratedAttribute.cs
- HierarchicalDataSourceConverter.cs
- DictionaryTraceRecord.cs
- GridViewUpdatedEventArgs.cs
- CombinedGeometry.cs
- CachedTypeface.cs
- CacheAxisQuery.cs
- TextAction.cs
- RepeatBehaviorConverter.cs
- QilList.cs
- DataGridBoolColumn.cs
- SystemThemeKey.cs
- UnmanagedMemoryStreamWrapper.cs
- InstanceDescriptor.cs
- DecoderNLS.cs
- DoubleLinkListEnumerator.cs
- EntityDataSourceSelectingEventArgs.cs
- LoadRetryConstantStrategy.cs
- ActivityExecutor.cs
- TraceLog.cs
- ImpersonationContext.cs
- WindowsGraphics.cs
- CompiledXpathExpr.cs
- CorrelationResolver.cs
- PerformanceCounterPermissionAttribute.cs
- UniqueSet.cs
- Pts.cs
- PropertyFilterAttribute.cs
- EntityDataSourceState.cs
- SubpageParagraph.cs
- FtpWebRequest.cs
- PolicyValidationException.cs
- StylusPointCollection.cs
- ListBox.cs
- TypeToken.cs
- KeyEventArgs.cs
- OdbcException.cs
- WebScriptServiceHostFactory.cs
- DSASignatureFormatter.cs
- EnumerableValidator.cs
- ProcessHostServerConfig.cs
- DocumentViewerAutomationPeer.cs
- EntityDataSourceValidationException.cs
- ScrollChrome.cs
- NameValueConfigurationElement.cs
- BitmapDownload.cs
- HttpInputStream.cs
- XmlComplianceUtil.cs
- PseudoWebRequest.cs
- ConsumerConnectionPoint.cs
- CacheDependency.cs
- HandlerFactoryCache.cs
- Button.cs
- EntityDataSourceDataSelection.cs
- WebEventCodes.cs
- TagPrefixCollection.cs
- UnsignedPublishLicense.cs
- DataSourceView.cs
- MouseEventArgs.cs
- VerificationException.cs
- Int16AnimationUsingKeyFrames.cs
- DocumentPageView.cs
- EdmItemCollection.cs
- WebPartsPersonalization.cs
- ManagementObject.cs
- _NestedMultipleAsyncResult.cs
- SecurityProtocolFactory.cs
- Queue.cs
- ResourceDescriptionAttribute.cs
- SmiSettersStream.cs
- DictionaryEntry.cs
- CapiNative.cs
- SQLRoleProvider.cs
- SqlErrorCollection.cs
- ISAPIWorkerRequest.cs
- SecurityResources.cs
- EntitySqlException.cs
- FilteredDataSetHelper.cs
- TabControlDesigner.cs
- EditingCommands.cs
- ToolbarAUtomationPeer.cs
- InvalidComObjectException.cs
- BuiltInPermissionSets.cs
- sitestring.cs
- AssemblyCollection.cs
- XmlSchemaSimpleTypeUnion.cs
- SqlUdtInfo.cs
- SqlClientWrapperSmiStream.cs
- WindowCollection.cs
- Point3DCollectionValueSerializer.cs
- WeakEventTable.cs
- EntityContainer.cs
- PrintDialog.cs
- ToolboxItemCollection.cs