Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / SqlClient / SqlReferenceCollection.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AuthenticateEventArgs.cs
- SequentialWorkflowRootDesigner.cs
- AssociationTypeEmitter.cs
- VBIdentifierTrimConverter.cs
- ItemsControlAutomationPeer.cs
- XmlElementCollection.cs
- EventHandlerList.cs
- HwndSubclass.cs
- Query.cs
- TypeElement.cs
- Pen.cs
- Size.cs
- coordinatorscratchpad.cs
- WorkflowControlClient.cs
- MappingItemCollection.cs
- SimpleType.cs
- ListBindingHelper.cs
- TextDecorationLocationValidation.cs
- OperatorExpressions.cs
- EventLog.cs
- ScriptReferenceBase.cs
- TypeInformation.cs
- PinnedBufferMemoryStream.cs
- DocumentScope.cs
- RegexCode.cs
- XamlGridLengthSerializer.cs
- SqlClientWrapperSmiStream.cs
- ServiceChannelManager.cs
- Message.cs
- CodeNamespace.cs
- TdsParser.cs
- HelpHtmlBuilder.cs
- InfoCardRSACryptoProvider.cs
- EndpointAddress.cs
- PersonalizableTypeEntry.cs
- OutputCache.cs
- Light.cs
- MSAAEventDispatcher.cs
- BinaryConverter.cs
- BoolLiteral.cs
- UserControlAutomationPeer.cs
- Registry.cs
- DBDataPermissionAttribute.cs
- MissingManifestResourceException.cs
- AuthorizationRuleCollection.cs
- ArgumentReference.cs
- HttpCacheVaryByContentEncodings.cs
- FileDataSourceCache.cs
- CompositeControlDesigner.cs
- ColumnMapTranslator.cs
- PenLineJoinValidation.cs
- DateTimePicker.cs
- ExpressionConverter.cs
- MatchAttribute.cs
- TextContainerChangedEventArgs.cs
- RequestCacheEntry.cs
- AppDomainAttributes.cs
- Mouse.cs
- SafeThreadHandle.cs
- TextViewBase.cs
- TabletDeviceInfo.cs
- EncodingStreamWrapper.cs
- TemplateKey.cs
- Section.cs
- ViewBox.cs
- CreateUserErrorEventArgs.cs
- UriScheme.cs
- UInt16.cs
- WebBrowsableAttribute.cs
- XPathConvert.cs
- DbExpressionVisitor_TResultType.cs
- XmlDataSourceView.cs
- AdRotator.cs
- PrePrepareMethodAttribute.cs
- NeutralResourcesLanguageAttribute.cs
- QueryAccessibilityHelpEvent.cs
- OracleBFile.cs
- WebPartCollection.cs
- SelectionProcessor.cs
- FieldBuilder.cs
- CustomError.cs
- activationcontext.cs
- SurrogateEncoder.cs
- DataGridSortCommandEventArgs.cs
- WebPartTracker.cs
- RtfToXamlReader.cs
- querybuilder.cs
- SqlNodeTypeOperators.cs
- BitmapEffectGeneralTransform.cs
- StateMachineWorkflowInstance.cs
- UnsafeMethods.cs
- ObjectQueryState.cs
- LayoutEvent.cs
- IssuedSecurityTokenProvider.cs
- odbcmetadatacolumnnames.cs
- HttpCachePolicyBase.cs
- InvokeProviderWrapper.cs
- Itemizer.cs
- StylusLogic.cs
- ObjectListDesigner.cs