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
- DecimalConverter.cs
- ImageDrawing.cs
- TaskResultSetter.cs
- PerformanceCounterCategory.cs
- VerticalAlignConverter.cs
- PerformanceCounterPermissionEntryCollection.cs
- COM2ColorConverter.cs
- TreeNodeBindingCollection.cs
- Padding.cs
- ArrayWithOffset.cs
- FormattedText.cs
- ProviderMetadata.cs
- WCFModelStrings.Designer.cs
- TabRenderer.cs
- RowCache.cs
- Point.cs
- AncestorChangedEventArgs.cs
- MeshGeometry3D.cs
- RootCodeDomSerializer.cs
- TeredoHelper.cs
- DynamicObject.cs
- Enlistment.cs
- AuditLogLocation.cs
- ZipIOLocalFileBlock.cs
- TextViewBase.cs
- DataGridColumn.cs
- ServiceMetadataContractBehavior.cs
- ListViewSortEventArgs.cs
- _NestedSingleAsyncResult.cs
- ThumbButtonInfo.cs
- JavaScriptString.cs
- SchemaTableColumn.cs
- XmlSchemaAttributeGroup.cs
- HostExecutionContextManager.cs
- PluralizationServiceUtil.cs
- StreamSecurityUpgradeInitiatorBase.cs
- BatchServiceHost.cs
- PriorityChain.cs
- Compiler.cs
- ScriptReferenceEventArgs.cs
- PersonalizableTypeEntry.cs
- BindingWorker.cs
- UndoManager.cs
- processwaithandle.cs
- RuleInfoComparer.cs
- ToolStripScrollButton.cs
- HashLookup.cs
- ColorTypeConverter.cs
- ListSourceHelper.cs
- ApplicationTrust.cs
- Stream.cs
- ClosableStream.cs
- sqlnorm.cs
- DataKeyArray.cs
- TableItemStyle.cs
- TimeSpanOrInfiniteConverter.cs
- AutomationPropertyInfo.cs
- ParallelTimeline.cs
- FileIOPermission.cs
- ToolStripSeparator.cs
- ColorPalette.cs
- BindValidator.cs
- PageBreakRecord.cs
- MailDefinition.cs
- InputProcessorProfiles.cs
- CompressionTransform.cs
- ReadOnlyDataSource.cs
- ProcessModelSection.cs
- CallbackValidator.cs
- TextRunCacheImp.cs
- Link.cs
- RecommendedAsConfigurableAttribute.cs
- EventProviderBase.cs
- StorageBasedPackageProperties.cs
- AsnEncodedData.cs
- MediaPlayerState.cs
- CellParagraph.cs
- MeasurementDCInfo.cs
- StrokeSerializer.cs
- ComplexTypeEmitter.cs
- Bidi.cs
- SelectionProviderWrapper.cs
- ProxyHwnd.cs
- ActivityMarkupSerializer.cs
- ModuleConfigurationInfo.cs
- XMLDiffLoader.cs
- ProxyWebPartManager.cs
- TextElementAutomationPeer.cs
- Matrix3D.cs
- Identity.cs
- WebServiceHandler.cs
- TemplateBindingExtensionConverter.cs
- BufferedWebEventProvider.cs
- ToolStripManager.cs
- CodeExpressionCollection.cs
- Pen.cs
- LayoutEditorPart.cs
- DataBindingHandlerAttribute.cs
- CodeNamespaceImport.cs
- OptimizedTemplateContentHelper.cs