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
- BeginStoryboard.cs
- SqlDependency.cs
- InboundActivityHelper.cs
- Win32SafeHandles.cs
- StreamUpdate.cs
- AssociationTypeEmitter.cs
- ConnectionsZone.cs
- CompiledQuery.cs
- CodeRegionDirective.cs
- ToolstripProfessionalRenderer.cs
- PathFigureCollectionValueSerializer.cs
- LayoutExceptionEventArgs.cs
- CompiledQuery.cs
- AttachInfo.cs
- DurationConverter.cs
- AmbientProperties.cs
- CqlQuery.cs
- DeviceOverridableAttribute.cs
- WebPartZoneCollection.cs
- CalendarDesigner.cs
- DataGridViewDataConnection.cs
- Cursor.cs
- DirectoryInfo.cs
- SoapSchemaMember.cs
- FormViewInsertEventArgs.cs
- DataPagerFieldItem.cs
- TextSegment.cs
- FocusChangedEventArgs.cs
- TerminatorSinks.cs
- SByteConverter.cs
- Thread.cs
- PerformanceCountersElement.cs
- TextReader.cs
- URIFormatException.cs
- Environment.cs
- Normalization.cs
- PageRanges.cs
- NameTable.cs
- RenderData.cs
- RangeValueProviderWrapper.cs
- InputReport.cs
- TemplateBindingExpressionConverter.cs
- QilLoop.cs
- LinearKeyFrames.cs
- CodeConstructor.cs
- ReferenceConverter.cs
- EmitterCache.cs
- _FtpDataStream.cs
- RoleService.cs
- IfJoinedCondition.cs
- Column.cs
- SafeNativeMethods.cs
- MiniCustomAttributeInfo.cs
- RectangleF.cs
- PrintPreviewControl.cs
- ContainerUtilities.cs
- GlyphInfoList.cs
- ScrollViewer.cs
- FileDialogCustomPlace.cs
- EventTrigger.cs
- BrushValueSerializer.cs
- StructuredProperty.cs
- BamlBinaryReader.cs
- BamlLocalizableResource.cs
- DataRowChangeEvent.cs
- TraceSection.cs
- XmlSchemaSimpleTypeUnion.cs
- Positioning.cs
- SerializerDescriptor.cs
- InfoCardAsymmetricCrypto.cs
- WindowsListViewGroupSubsetLink.cs
- PTUtility.cs
- NetworkAddressChange.cs
- COSERVERINFO.cs
- Mutex.cs
- Walker.cs
- HealthMonitoringSection.cs
- ConstructorNeedsTagAttribute.cs
- WebZoneDesigner.cs
- TextEditorCharacters.cs
- ContainerTracking.cs
- OrderPreservingMergeHelper.cs
- DbTransaction.cs
- TextParaLineResult.cs
- MainMenu.cs
- cookieexception.cs
- DeclaredTypeValidatorAttribute.cs
- OptimalBreakSession.cs
- MappingSource.cs
- ConsoleTraceListener.cs
- StrokeNodeOperations2.cs
- XmlNamedNodeMap.cs
- SafeBitVector32.cs
- AttributeAction.cs
- HtmlTableCellCollection.cs
- DispatcherExceptionFilterEventArgs.cs
- AuthorizationContext.cs
- ProxyWebPartManager.cs
- SqlInfoMessageEvent.cs
- ZoneLinkButton.cs