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
- TcpHostedTransportConfiguration.cs
- HeaderFilter.cs
- ListDesigner.cs
- WindowHelperService.cs
- DataViewManager.cs
- SqlDependency.cs
- FixedSOMSemanticBox.cs
- WebPartCloseVerb.cs
- PropertyDescriptors.cs
- MsmqPoisonMessageException.cs
- ColorConvertedBitmap.cs
- TypeReference.cs
- XmlSerializerNamespaces.cs
- CertificateElement.cs
- ContentType.cs
- LiteralControl.cs
- LocalValueEnumerator.cs
- FontWeight.cs
- ProfileInfo.cs
- DesignerTransactionCloseEvent.cs
- StringReader.cs
- RadioButtonList.cs
- QuotedStringWriteStateInfo.cs
- ErrorHandlerFaultInfo.cs
- OrderPreservingPipeliningMergeHelper.cs
- TriState.cs
- TabItemWrapperAutomationPeer.cs
- SafeMemoryMappedViewHandle.cs
- MessagePartSpecification.cs
- ExpressionBinding.cs
- IPEndPoint.cs
- MatchSingleFxEngineOpcode.cs
- ServicePerformanceCounters.cs
- WeakReadOnlyCollection.cs
- MeasurementDCInfo.cs
- ToolStripOverflowButton.cs
- _ChunkParse.cs
- ObjectDataSourceChooseTypePanel.cs
- PrintControllerWithStatusDialog.cs
- ZipIOBlockManager.cs
- CodeArgumentReferenceExpression.cs
- AttributedMetaModel.cs
- SelectionItemPattern.cs
- XmlAttributeAttribute.cs
- SqlDataSourceSummaryPanel.cs
- WebEventCodes.cs
- ResourceProviderFactory.cs
- figurelength.cs
- CodeMethodReturnStatement.cs
- TimeSpanSecondsConverter.cs
- BindingWorker.cs
- DiscoveryInnerClientAdhocCD1.cs
- MediaCommands.cs
- CompiledELinqQueryState.cs
- DebugManager.cs
- ReferencedCollectionType.cs
- Rect3D.cs
- DataViewManagerListItemTypeDescriptor.cs
- SByteStorage.cs
- RangeValueProviderWrapper.cs
- RtfToken.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- HtmlDocument.cs
- DesignerRegionCollection.cs
- TrackPoint.cs
- BaseAsyncResult.cs
- RegexStringValidatorAttribute.cs
- IntSumAggregationOperator.cs
- DataGridColumnCollection.cs
- NativeMethods.cs
- CroppedBitmap.cs
- OutputCacheModule.cs
- GridEntryCollection.cs
- Pens.cs
- SourceChangedEventArgs.cs
- DocumentReference.cs
- ScrollEventArgs.cs
- CheckedListBox.cs
- XmlTypeAttribute.cs
- StorageMappingItemLoader.cs
- HierarchicalDataTemplate.cs
- HijriCalendar.cs
- LineInfo.cs
- DesignerCategoryAttribute.cs
- HitTestResult.cs
- ListSortDescription.cs
- NavigationWindow.cs
- GenerateScriptTypeAttribute.cs
- ActionFrame.cs
- regiisutil.cs
- InvokeProviderWrapper.cs
- WebPartConnectionsCancelVerb.cs
- VirtualDirectoryMappingCollection.cs
- InitializerFacet.cs
- formatstringdialog.cs
- StylusLogic.cs
- ListMarkerLine.cs
- SafeNativeMethods.cs
- CodeParameterDeclarationExpression.cs
- TimeIntervalCollection.cs