Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / System / Data / SqlClient / SqlReferenceCollection.cs / 1 / SqlReferenceCollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- using System; using System.Data; using System.Data.Common; using System.Diagnostics; using System.Data.ProviderBase; namespace System.Data.SqlClient { sealed internal class SqlReferenceCollection : DbReferenceCollection { internal const int DataReaderTag = 1; private int _dataReaderCount; internal bool MayHaveDataReader { get { return (0 != _dataReaderCount); } } override public void Add(object value, int tag) { Debug.Assert(DataReaderTag == tag, "unexpected tag?"); Debug.Assert(value is SqlDataReader, "tag doesn't match object type: SqlDataReader"); _dataReaderCount++; base.AddItem(value, tag); } internal void Deactivate() { if (MayHaveDataReader) { base.Notify(0); _dataReaderCount = 0; } Purge(); } internal SqlDataReader FindLiveReader(SqlCommand command) { // if null == command, will find first live datareader // else will find live datareader assocated with the command if (MayHaveDataReader) { foreach (SqlDataReader dataReader in Filter(DataReaderTag)) { if ((null != dataReader) && !dataReader.IsClosed && ((null == command) || (command == dataReader.Command))) { return dataReader; } } } return null; } override protected bool NotifyItem(int message, int tag, object value) { Debug.Assert(0 == message, "unexpected message?"); Debug.Assert(DataReaderTag == tag, "unexpected tag?"); SqlDataReader rdr = (SqlDataReader)value; if (!rdr.IsClosed) { rdr.CloseReaderFromConnection (); } return false; // remove it from the collection } override public void Remove(object value) { Debug.Assert(value is SqlDataReader, "SqlReferenceCollection.Remove expected a SqlDataReader"); _dataReaderCount--; base.RemoveItem(value); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SerializationObjectManager.cs
- BulletChrome.cs
- CustomPeerResolverService.cs
- ObjectDataSourceSelectingEventArgs.cs
- CatalogPartCollection.cs
- SystemWebCachingSectionGroup.cs
- SqlDeflator.cs
- PerfCounters.cs
- PeerTransportListenAddressConverter.cs
- RequestCacheEntry.cs
- DriveNotFoundException.cs
- MenuItemBinding.cs
- AppSettingsExpressionBuilder.cs
- ChildTable.cs
- ColorConverter.cs
- DataControlImageButton.cs
- BamlResourceContent.cs
- IsolatedStoragePermission.cs
- EventLogConfiguration.cs
- CompositeCollection.cs
- DragSelectionMessageFilter.cs
- DataObject.cs
- Message.cs
- ContainerParaClient.cs
- WebPartRestoreVerb.cs
- SecurityHeader.cs
- FixedSOMFixedBlock.cs
- XmlObjectSerializerContext.cs
- InfocardInteractiveChannelInitializer.cs
- XmlTypeMapping.cs
- MethodBuilderInstantiation.cs
- TypeResolver.cs
- IOThreadScheduler.cs
- PersonalizableAttribute.cs
- RoleBoolean.cs
- XmlToDatasetMap.cs
- WebReferencesBuildProvider.cs
- SessionStateItemCollection.cs
- SingleStorage.cs
- StatusBarPanelClickEvent.cs
- Triplet.cs
- DomainConstraint.cs
- GPStream.cs
- basevalidator.cs
- _ListenerRequestStream.cs
- AutoResetEvent.cs
- SessionIDManager.cs
- MouseEventArgs.cs
- SerializationStore.cs
- SqlConnectionString.cs
- processwaithandle.cs
- ScrollEventArgs.cs
- Hashtable.cs
- IconConverter.cs
- Soap.cs
- OrderByLifter.cs
- InternalResources.cs
- Msec.cs
- XmlNamespaceDeclarationsAttribute.cs
- DataGridViewAdvancedBorderStyle.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- AssociationEndMember.cs
- Label.cs
- ActivityWithResultConverter.cs
- DeobfuscatingStream.cs
- DataGridViewAdvancedBorderStyle.cs
- ProcessInfo.cs
- Comparer.cs
- ScrollViewerAutomationPeer.cs
- StrongNamePublicKeyBlob.cs
- FilterQuery.cs
- securestring.cs
- XmlSchemaParticle.cs
- SafeCryptContextHandle.cs
- PerformanceCounterNameAttribute.cs
- XmlKeywords.cs
- UserValidatedEventArgs.cs
- PageThemeBuildProvider.cs
- CodeMemberProperty.cs
- CapabilitiesSection.cs
- WorkflowItemsPresenter.cs
- DataControlFieldCollection.cs
- HtmlInputControl.cs
- GPPOINT.cs
- Msmq4PoisonHandler.cs
- ChannelServices.cs
- TextSerializer.cs
- DataGridViewCellStateChangedEventArgs.cs
- MethodBuilder.cs
- SqlDataSourceStatusEventArgs.cs
- PersistenceTypeAttribute.cs
- OrderedDictionary.cs
- ButtonFieldBase.cs
- ToggleButton.cs
- AccessibilityApplicationManager.cs
- TextBox.cs
- SplitterCancelEvent.cs
- SecurityUniqueId.cs
- CompilerScope.Storage.cs
- DelayLoadType.cs