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
- ToolboxItemWrapper.cs
- FontFamilyIdentifier.cs
- XPathQilFactory.cs
- Adorner.cs
- CopyAttributesAction.cs
- UserMapPath.cs
- DnsPermission.cs
- DocumentGridContextMenu.cs
- HeaderedItemsControl.cs
- XmlDataProvider.cs
- ConfigurationSectionGroup.cs
- Native.cs
- HandleRef.cs
- Membership.cs
- NoPersistScope.cs
- DetailsViewUpdatedEventArgs.cs
- WebServiceHandlerFactory.cs
- CachedPathData.cs
- ListParaClient.cs
- LassoHelper.cs
- ProviderCommandInfoUtils.cs
- EncryptRequest.cs
- XPathSelectionIterator.cs
- SettingsContext.cs
- DrawingDrawingContext.cs
- FilterQuery.cs
- DateTimeFormat.cs
- SHA256.cs
- MeasureData.cs
- DataGrid.cs
- AnnouncementService.cs
- XmlImplementation.cs
- XmlSortKeyAccumulator.cs
- UnauthorizedWebPart.cs
- PerformanceCounterPermissionEntryCollection.cs
- EntityWrapperFactory.cs
- Roles.cs
- PeerObject.cs
- _ConnectStream.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- NameValueCache.cs
- IncrementalReadDecoders.cs
- ByteStack.cs
- SafeNativeMethodsCLR.cs
- SqlInternalConnectionSmi.cs
- datacache.cs
- XDRSchema.cs
- SafeProcessHandle.cs
- EntityDataSource.cs
- FlowPanelDesigner.cs
- ProvidePropertyAttribute.cs
- PropertyEntry.cs
- SHA1.cs
- RouteParametersHelper.cs
- PiiTraceSource.cs
- linebase.cs
- DependencyProperty.cs
- XmlComplianceUtil.cs
- DomainUpDown.cs
- DrawingImage.cs
- GeneralTransform3D.cs
- BitStack.cs
- TimeSpanConverter.cs
- xsdvalidator.cs
- DetailsViewRowCollection.cs
- CodeDelegateCreateExpression.cs
- StorageMappingItemLoader.cs
- FormsAuthenticationModule.cs
- ServiceNameElementCollection.cs
- StreamGeometry.cs
- CharacterMetrics.cs
- OracleCommand.cs
- EditBehavior.cs
- NavigationPropertyEmitter.cs
- ImageSource.cs
- XmlExpressionDumper.cs
- TableAdapterManagerHelper.cs
- MenuItemStyleCollection.cs
- latinshape.cs
- SHA256Managed.cs
- ADMembershipProvider.cs
- TextBox.cs
- WebPartTransformerAttribute.cs
- PackagePart.cs
- ArrangedElement.cs
- UnmanagedMarshal.cs
- XmlSortKeyAccumulator.cs
- KnownTypeHelper.cs
- OdbcDataReader.cs
- Rect3D.cs
- XmlResolver.cs
- AnonymousIdentificationSection.cs
- SchemaSetCompiler.cs
- HttpModuleCollection.cs
- Byte.cs
- HtmlDocument.cs
- Quaternion.cs
- Pool.cs
- InputScopeManager.cs