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
- DecoderFallbackWithFailureFlag.cs
- ScrollPatternIdentifiers.cs
- SqlConnectionString.cs
- DataSourceViewSchemaConverter.cs
- Form.cs
- bidPrivateBase.cs
- ImageClickEventArgs.cs
- EntityStoreSchemaGenerator.cs
- HijriCalendar.cs
- XmlDigitalSignatureProcessor.cs
- WebHttpEndpointElement.cs
- EncoderReplacementFallback.cs
- Int32Converter.cs
- BufferAllocator.cs
- PagePropertiesChangingEventArgs.cs
- ExpandableObjectConverter.cs
- HashAlgorithm.cs
- ColorConverter.cs
- SqlCommandAsyncResult.cs
- TableRowsCollectionEditor.cs
- NullRuntimeConfig.cs
- PersistenceException.cs
- HandleTable.cs
- RequestCacheEntry.cs
- TextEffectResolver.cs
- MouseCaptureWithinProperty.cs
- CngKey.cs
- NativeMethods.cs
- FormViewDeleteEventArgs.cs
- TextParaClient.cs
- HWStack.cs
- InplaceBitmapMetadataWriter.cs
- PermissionSetEnumerator.cs
- SimpleHandlerBuildProvider.cs
- TextContainerHelper.cs
- DataSetSchema.cs
- MinimizableAttributeTypeConverter.cs
- PropertyEmitterBase.cs
- WindowsScroll.cs
- ContourSegment.cs
- SqlBulkCopy.cs
- Utils.cs
- TextEditorSelection.cs
- TableCellAutomationPeer.cs
- MonikerUtility.cs
- NodeLabelEditEvent.cs
- NativeWindow.cs
- CollectionType.cs
- FormClosingEvent.cs
- Pointer.cs
- AssociationSet.cs
- Interlocked.cs
- SineEase.cs
- CodeTypeReferenceCollection.cs
- Relationship.cs
- HelpInfo.cs
- XPathAxisIterator.cs
- PersonalizationStateInfoCollection.cs
- ClaimSet.cs
- Label.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- Misc.cs
- ActivityExecutionContext.cs
- DocumentEventArgs.cs
- TableFieldsEditor.cs
- IndexOutOfRangeException.cs
- SerializationStore.cs
- BuildProvider.cs
- PrinterUnitConvert.cs
- CookielessData.cs
- SectionInformation.cs
- WindowsBrush.cs
- SystemIcmpV6Statistics.cs
- MetabaseSettings.cs
- WindowHideOrCloseTracker.cs
- CreatingCookieEventArgs.cs
- DataSetMappper.cs
- HtmlInputControl.cs
- Transform.cs
- OdbcUtils.cs
- base64Transforms.cs
- WebControlsSection.cs
- SafeProcessHandle.cs
- WindowsTreeView.cs
- TypeSystemProvider.cs
- Point4D.cs
- SecurityTokenValidationException.cs
- SettingsProperty.cs
- ExternalException.cs
- BindingListCollectionView.cs
- xdrvalidator.cs
- AddInContractAttribute.cs
- MessageSmuggler.cs
- ComponentChangedEvent.cs
- HwndSourceParameters.cs
- SHA512CryptoServiceProvider.cs
- ShaderEffect.cs
- CheckBoxBaseAdapter.cs
- UnsafeNativeMethods.cs
- Rotation3DAnimationUsingKeyFrames.cs