Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / SqlClient / SqlReferenceCollection.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ActivityInstance.cs
- DatePickerDateValidationErrorEventArgs.cs
- ActiveXSite.cs
- sortedlist.cs
- DataGridViewAccessibleObject.cs
- SmtpLoginAuthenticationModule.cs
- UInt64.cs
- HwndProxyElementProvider.cs
- XhtmlTextWriter.cs
- PreviewKeyDownEventArgs.cs
- ClientTargetCollection.cs
- CompilerScopeManager.cs
- MemberInfoSerializationHolder.cs
- CallbackException.cs
- TextPenaltyModule.cs
- DiscoveryClientDocuments.cs
- BamlRecordWriter.cs
- InplaceBitmapMetadataWriter.cs
- SynchronizingStream.cs
- Figure.cs
- DefaultSerializationProviderAttribute.cs
- CrossAppDomainChannel.cs
- WebSysDisplayNameAttribute.cs
- KernelTypeValidation.cs
- RemotingServices.cs
- RunClient.cs
- ManagementOptions.cs
- PathParser.cs
- ActiveXHost.cs
- MexHttpBindingCollectionElement.cs
- InputScopeManager.cs
- DataControlReference.cs
- TdsValueSetter.cs
- TextRenderer.cs
- Attributes.cs
- QilStrConcatenator.cs
- ParseNumbers.cs
- Renderer.cs
- MissingMemberException.cs
- OrthographicCamera.cs
- ConnectionPoint.cs
- Marshal.cs
- CompositeControl.cs
- CodeParameterDeclarationExpressionCollection.cs
- CmsInterop.cs
- BitmapEffectrendercontext.cs
- XmlChildEnumerator.cs
- InvalidCastException.cs
- DBNull.cs
- TreeWalker.cs
- OperatingSystem.cs
- FocusChangedEventArgs.cs
- LinqDataView.cs
- ListViewInsertEventArgs.cs
- ProviderBase.cs
- ImageSourceConverter.cs
- Ray3DHitTestResult.cs
- Choices.cs
- ArrayElementGridEntry.cs
- NameValueFileSectionHandler.cs
- SystemIPAddressInformation.cs
- CustomCredentialPolicy.cs
- CodeCatchClause.cs
- NamespaceQuery.cs
- MimeMapping.cs
- DataGrid.cs
- OperationInvokerBehavior.cs
- KnownTypesProvider.cs
- XmlUtf8RawTextWriter.cs
- DriveInfo.cs
- ToolStripScrollButton.cs
- XmlReflectionImporter.cs
- PropertyTabChangedEvent.cs
- MsmqIntegrationBindingElement.cs
- ValidationHelper.cs
- FieldBuilder.cs
- IgnorePropertiesAttribute.cs
- ArgIterator.cs
- ZipIOCentralDirectoryBlock.cs
- ContextMenu.cs
- TemplateBindingExtension.cs
- MergablePropertyAttribute.cs
- TreeNodeCollectionEditorDialog.cs
- CallbackException.cs
- ConnectionManagementElement.cs
- LinqToSqlWrapper.cs
- InstanceCreationEditor.cs
- Floater.cs
- Splitter.cs
- ComplexTypeEmitter.cs
- XmlNodeWriter.cs
- SettingsSavedEventArgs.cs
- DependencyStoreSurrogate.cs
- SessionStateContainer.cs
- BidPrivateBase.cs
- VisualTreeUtils.cs
- FacetChecker.cs
- InvalidChannelBindingException.cs
- OrderPreservingPipeliningSpoolingTask.cs
- MeasureItemEvent.cs