Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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.
//
// [....]
// [....]
//-----------------------------------------------------------------------------
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
- StaticTextPointer.cs
- odbcmetadatacolumnnames.cs
- MetadataCache.cs
- InfocardInteractiveChannelInitializer.cs
- NavigationHelper.cs
- AsyncParams.cs
- ContractsBCL.cs
- EventLogEntryCollection.cs
- PersonalizationProvider.cs
- TreeNode.cs
- ProviderCommandInfoUtils.cs
- QilIterator.cs
- _UncName.cs
- SafeCancelMibChangeNotify.cs
- TypedCompletedAsyncResult.cs
- ImageMap.cs
- SqlDataSource.cs
- DataServiceKeyAttribute.cs
- PrefixQName.cs
- BrowserDefinitionCollection.cs
- AutomationIdentifierGuids.cs
- Paragraph.cs
- VerificationAttribute.cs
- ListViewInsertedEventArgs.cs
- Tile.cs
- UserControl.cs
- GlyphRunDrawing.cs
- BamlWriter.cs
- ToolStripPanelRenderEventArgs.cs
- CredentialSelector.cs
- ExpressionConverter.cs
- StylusShape.cs
- BindingContext.cs
- Model3D.cs
- DbParameterHelper.cs
- ProxyAttribute.cs
- InternalsVisibleToAttribute.cs
- XAMLParseException.cs
- CollectionViewGroupInternal.cs
- PropertyChangedEventManager.cs
- PointConverter.cs
- DependencyObjectPropertyDescriptor.cs
- HtmlShim.cs
- HtmlContainerControl.cs
- TimeoutException.cs
- WebPartAuthorizationEventArgs.cs
- DataControlButton.cs
- TreeNodeStyleCollection.cs
- CommandLibraryHelper.cs
- QueryExpr.cs
- UserControlParser.cs
- DbProviderFactoriesConfigurationHandler.cs
- AudioLevelUpdatedEventArgs.cs
- OraclePermission.cs
- InvariantComparer.cs
- XmlJsonWriter.cs
- HtmlElement.cs
- FilteredAttributeCollection.cs
- CompressStream.cs
- TypeCollectionDesigner.xaml.cs
- RawAppCommandInputReport.cs
- StateWorkerRequest.cs
- SoapBinding.cs
- Triplet.cs
- FilteredSchemaElementLookUpTable.cs
- FormConverter.cs
- DrawListViewItemEventArgs.cs
- EncodingNLS.cs
- DetailsViewDeleteEventArgs.cs
- Utils.cs
- DataGridViewColumnEventArgs.cs
- Size.cs
- CellQuery.cs
- EntityDataSourceValidationException.cs
- GridSplitter.cs
- MutexSecurity.cs
- AppearanceEditorPart.cs
- EntityProviderServices.cs
- ListControl.cs
- ItemList.cs
- TimeoutConverter.cs
- AmbientLight.cs
- _ListenerResponseStream.cs
- MappingModelBuildProvider.cs
- PageEventArgs.cs
- TableDetailsCollection.cs
- SerialStream.cs
- _FixedSizeReader.cs
- ParserStreamGeometryContext.cs
- OLEDB_Util.cs
- ClientUtils.cs
- CodeNamespaceCollection.cs
- WebPartConnection.cs
- TraceHandler.cs
- Profiler.cs
- AssociationEndMember.cs
- Int16Storage.cs
- PackageDigitalSignature.cs
- LineServicesRun.cs
- TiffBitmapDecoder.cs