Code:
/ DotNET / DotNET / 8.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
- NameValueCollection.cs
- WebPartEventArgs.cs
- WorkflowServiceOperationListItem.cs
- InkPresenterAutomationPeer.cs
- LayeredChannelFactory.cs
- RenamedEventArgs.cs
- XamlDesignerSerializationManager.cs
- Serializer.cs
- ProtocolsConfigurationEntry.cs
- Emitter.cs
- HostProtectionException.cs
- WebPartConnectionsDisconnectVerb.cs
- FixedElement.cs
- StorageTypeMapping.cs
- CompositeFontInfo.cs
- DataGrid.cs
- Itemizer.cs
- MultiSelector.cs
- CompareInfo.cs
- ProfilePropertyMetadata.cs
- XmlUrlResolver.cs
- LayoutSettings.cs
- CatalogPartChrome.cs
- Command.cs
- CodeArgumentReferenceExpression.cs
- TrackBar.cs
- TransactionScope.cs
- TransformPatternIdentifiers.cs
- MimeFormImporter.cs
- GridPattern.cs
- querybuilder.cs
- BuildManager.cs
- ParameterToken.cs
- NativeMethods.cs
- RSAProtectedConfigurationProvider.cs
- ExpressionParser.cs
- FontWeightConverter.cs
- PropertyCondition.cs
- TickBar.cs
- KernelTypeValidation.cs
- MetafileHeaderEmf.cs
- UnsafeNativeMethods.cs
- SchemaElement.cs
- UnsafeNetInfoNativeMethods.cs
- TabPage.cs
- BitmapImage.cs
- EnumerableWrapperWeakToStrong.cs
- ITextView.cs
- CalendarDay.cs
- TimeoutStream.cs
- SchemaNamespaceManager.cs
- SequenceDesigner.cs
- KerberosTicketHashIdentifierClause.cs
- XmlAttributeProperties.cs
- XmlSchemaSet.cs
- DrawingAttributes.cs
- ControlEvent.cs
- DefaultValueTypeConverter.cs
- EraserBehavior.cs
- IProvider.cs
- DataIdProcessor.cs
- RSAOAEPKeyExchangeFormatter.cs
- httpserverutility.cs
- regiisutil.cs
- AdapterDictionary.cs
- TextElementEnumerator.cs
- VisualProxy.cs
- ClosableStream.cs
- XamlStyleSerializer.cs
- AsynchronousChannelMergeEnumerator.cs
- DataTransferEventArgs.cs
- DataTableClearEvent.cs
- ItemCheckEvent.cs
- Compiler.cs
- CodeCastExpression.cs
- KnownTypeHelper.cs
- OdbcConnectionHandle.cs
- NCryptSafeHandles.cs
- XmlDataSourceView.cs
- MarkupObject.cs
- StrokeDescriptor.cs
- MachineKeyConverter.cs
- ObjectCloneHelper.cs
- LazyTextWriterCreator.cs
- HatchBrush.cs
- Int64AnimationBase.cs
- XmlSchemaObject.cs
- CompilationUnit.cs
- JavaScriptSerializer.cs
- SafeLibraryHandle.cs
- ProcessManager.cs
- CodeAttributeDeclarationCollection.cs
- HttpRequestCacheValidator.cs
- FloatAverageAggregationOperator.cs
- DetailsViewDeletedEventArgs.cs
- TextPointer.cs
- DeferredElementTreeState.cs
- LinqDataSourceDeleteEventArgs.cs
- PackageDigitalSignatureManager.cs
- ModelItemCollectionImpl.cs