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
- MessagePropertyFilter.cs
- TypedTableBaseExtensions.cs
- ComponentManagerBroker.cs
- DataListItemEventArgs.cs
- ObjectContextServiceProvider.cs
- LayoutTable.cs
- CompoundFileDeflateTransform.cs
- CreateUserWizard.cs
- XmlComplianceUtil.cs
- ImageUrlEditor.cs
- PerformanceCounterPermissionEntryCollection.cs
- Transactions.cs
- StickyNote.cs
- EntityViewContainer.cs
- Attribute.cs
- BuildProviderCollection.cs
- TextTreeFixupNode.cs
- MatrixTransform.cs
- UIElementIsland.cs
- CustomTrackingRecord.cs
- ListViewItemSelectionChangedEvent.cs
- thaishape.cs
- MetadataArtifactLoader.cs
- PrinterResolution.cs
- QilExpression.cs
- GreenMethods.cs
- GcHandle.cs
- XDRSchema.cs
- HandleExceptionArgs.cs
- XmlStreamStore.cs
- ValueExpressions.cs
- FolderBrowserDialog.cs
- XmlLanguage.cs
- ErrorFormatterPage.cs
- lengthconverter.cs
- Socket.cs
- SingleStorage.cs
- XmlSchemaChoice.cs
- RuntimeCompatibilityAttribute.cs
- CancelEventArgs.cs
- LogicalExpr.cs
- ScriptControlDescriptor.cs
- RemotingSurrogateSelector.cs
- CompensationDesigner.cs
- DynamicRenderer.cs
- PersonalizationProvider.cs
- ProcessModule.cs
- Matrix3D.cs
- AgileSafeNativeMemoryHandle.cs
- SqlReorderer.cs
- TranslateTransform3D.cs
- ThreadStaticAttribute.cs
- PackageRelationshipSelector.cs
- TextWriterTraceListener.cs
- ComponentDispatcher.cs
- KeyConverter.cs
- CryptoHandle.cs
- CryptoProvider.cs
- MessageLoggingElement.cs
- WaitHandleCannotBeOpenedException.cs
- ServicePerformanceCounters.cs
- Dictionary.cs
- ManualResetEvent.cs
- __ConsoleStream.cs
- CacheMemory.cs
- HtmlButton.cs
- MetadataHelper.cs
- Path.cs
- DataGridDesigner.cs
- PropertyEmitter.cs
- RadioButtonBaseAdapter.cs
- CodeMemberField.cs
- LifetimeServices.cs
- DataGridView.cs
- StylusDownEventArgs.cs
- WebPartManager.cs
- XmlStreamNodeWriter.cs
- EventSinkActivity.cs
- DataGridViewCellPaintingEventArgs.cs
- TripleDES.cs
- CacheMemory.cs
- CompositeCollectionView.cs
- DrawItemEvent.cs
- WebPartEditVerb.cs
- DataSource.cs
- TrackingServices.cs
- TextFormatterContext.cs
- ConfigurationPropertyAttribute.cs
- StorageSetMapping.cs
- ServiceHostingEnvironment.cs
- ErrorFormatterPage.cs
- CollectionViewSource.cs
- TdsEnums.cs
- DataIdProcessor.cs
- ShadowGlyph.cs
- TableRow.cs
- WebConfigurationManager.cs
- TemplateKeyConverter.cs
- FileDialog_Vista_Interop.cs
- TemplateNodeContextMenu.cs