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
- HtmlProps.cs
- OutputScope.cs
- WebEncodingValidator.cs
- UniqueIdentifierService.cs
- LiteralTextContainerControlBuilder.cs
- DataConnectionHelper.cs
- RangeBase.cs
- NativeObjectSecurity.cs
- ActivityValidator.cs
- AutomationPatternInfo.cs
- Tool.cs
- FocusWithinProperty.cs
- WebScriptEnablingElement.cs
- _SSPIWrapper.cs
- SecurityResources.cs
- ContextMenuStrip.cs
- Point3DCollection.cs
- IsolatedStorageFileStream.cs
- UniformGrid.cs
- Viewport3DVisual.cs
- RelationshipType.cs
- ConsoleCancelEventArgs.cs
- FileChangesMonitor.cs
- DataViewSettingCollection.cs
- UInt64Converter.cs
- List.cs
- QueryModel.cs
- TypeConverters.cs
- DataColumnMappingCollection.cs
- Highlights.cs
- SqlCacheDependency.cs
- MembershipSection.cs
- DataTemplateSelector.cs
- SerializeAbsoluteContext.cs
- GridViewColumnCollection.cs
- RuntimeConfig.cs
- TcpServerChannel.cs
- WebHttpBindingCollectionElement.cs
- PrefixHandle.cs
- XmlNodeWriter.cs
- WinHttpWebProxyFinder.cs
- ChannelFactory.cs
- TransactionsSectionGroup.cs
- ModulesEntry.cs
- DrawingBrush.cs
- ScrollChrome.cs
- AddValidationError.cs
- RolePrincipal.cs
- BindingBase.cs
- TextTreeText.cs
- TemplateBindingExtension.cs
- Model3DGroup.cs
- ExtendedPropertyInfo.cs
- ValueUtilsSmi.cs
- SqlUserDefinedTypeAttribute.cs
- HwndSourceParameters.cs
- DataTablePropertyDescriptor.cs
- WebRequestModulesSection.cs
- LayoutEngine.cs
- TextSelectionHelper.cs
- DataGridViewSelectedColumnCollection.cs
- PinnedBufferMemoryStream.cs
- OletxCommittableTransaction.cs
- FixedHighlight.cs
- QuaternionAnimationUsingKeyFrames.cs
- GroupBox.cs
- FixedFlowMap.cs
- cookie.cs
- HijriCalendar.cs
- RangeValidator.cs
- Win32KeyboardDevice.cs
- RowToParametersTransformer.cs
- BrushValueSerializer.cs
- MethodExpr.cs
- ContravarianceAdapter.cs
- DbParameterCollection.cs
- NameValueCache.cs
- WebPartCloseVerb.cs
- ValidatorAttribute.cs
- InternalTypeHelper.cs
- PackWebRequest.cs
- OdbcHandle.cs
- TableItemPattern.cs
- OraclePermission.cs
- Light.cs
- ForAllOperator.cs
- DriveInfo.cs
- InputScope.cs
- CompilerTypeWithParams.cs
- UnsafeNativeMethodsTablet.cs
- ExclusiveHandle.cs
- SQLGuidStorage.cs
- ReflectionHelper.cs
- SurrogateChar.cs
- HandlerFactoryWrapper.cs
- BooleanFunctions.cs
- OdbcConnectionString.cs
- GeneralTransform.cs
- OdbcError.cs
- PointAnimationBase.cs