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
- ShutDownListener.cs
- AddInServer.cs
- formatter.cs
- ListView.cs
- DataViewSetting.cs
- DataSourceConverter.cs
- File.cs
- XmlTextReaderImpl.cs
- DataKey.cs
- ObjectParameterCollection.cs
- JumpItem.cs
- PrinterResolution.cs
- SecurityTokenValidationException.cs
- AnimationStorage.cs
- LogFlushAsyncResult.cs
- CompilationRelaxations.cs
- TimestampInformation.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- GeneralTransform3DGroup.cs
- TakeOrSkipWhileQueryOperator.cs
- ViewSimplifier.cs
- WebContentFormatHelper.cs
- MruCache.cs
- LinqDataSource.cs
- WorkflowTraceTransfer.cs
- AddInDeploymentState.cs
- manifestimages.cs
- ResourceExpressionBuilder.cs
- TemplateLookupAction.cs
- Decimal.cs
- _HeaderInfo.cs
- PeerName.cs
- ConditionBrowserDialog.cs
- ProjectionPlanCompiler.cs
- TextBoxAutoCompleteSourceConverter.cs
- WebPart.cs
- BitmapEffect.cs
- TriggerBase.cs
- SqlAggregateChecker.cs
- GridSplitterAutomationPeer.cs
- RegexFCD.cs
- TextBoxBase.cs
- ScrollEvent.cs
- SystemMulticastIPAddressInformation.cs
- FileDialogCustomPlaces.cs
- MultilineStringConverter.cs
- ReadWriteSpinLock.cs
- AsmxEndpointPickerExtension.cs
- DesignerMetadata.cs
- FixedSchema.cs
- DataSourceCacheDurationConverter.cs
- CustomErrorsSectionWrapper.cs
- TreeNodeCollection.cs
- DbCommandDefinition.cs
- HtmlMeta.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- WorkflowPersistenceContext.cs
- InteropEnvironment.cs
- ViewManager.cs
- SQLDateTimeStorage.cs
- ColorMatrix.cs
- RuleInfoComparer.cs
- RectangleHotSpot.cs
- MediaContext.cs
- BeginEvent.cs
- StreamUpdate.cs
- TouchEventArgs.cs
- DoubleAnimation.cs
- Overlapped.cs
- TdsParserSessionPool.cs
- ComAdminWrapper.cs
- OdbcConnectionFactory.cs
- Paragraph.cs
- BlurEffect.cs
- ProcessManager.cs
- RunClient.cs
- __TransparentProxy.cs
- TagPrefixAttribute.cs
- OLEDB_Enum.cs
- MatrixAnimationUsingKeyFrames.cs
- RetrieveVirtualItemEventArgs.cs
- CapabilitiesAssignment.cs
- SID.cs
- SBCSCodePageEncoding.cs
- UInt64.cs
- LinkLabel.cs
- UnionExpr.cs
- DLinqTableProvider.cs
- MobileControlBuilder.cs
- TranslateTransform.cs
- CountdownEvent.cs
- RemoteDebugger.cs
- VariableQuery.cs
- Char.cs
- httpserverutility.cs
- ReferenceEqualityComparer.cs
- PeerNameRecordCollection.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- TreeNodeClickEventArgs.cs
- LinkTarget.cs