Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Merging / MergeEnumerator.cs / 1305376 / MergeEnumerator.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // MergeEnumerator.cs // //[....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections; using System.Collections.Generic; using System.Diagnostics.Contracts; namespace System.Linq.Parallel { ////// Convenience class used by enumerators that merge many partitions into one. /// ///internal abstract class MergeEnumerator : IEnumerator { protected QueryTaskGroupState m_taskGroupState; //------------------------------------------------------------------------------------ // Initializes a new enumerator with the specified group state. // protected MergeEnumerator(QueryTaskGroupState taskGroupState) { Contract.Assert(taskGroupState != null); m_taskGroupState = taskGroupState; } //----------------------------------------------------------------------------------- // Abstract members of IEnumerator that must be implemented by concrete subclasses. // public abstract TInputOutput Current { get; } public abstract bool MoveNext(); //----------------------------------------------------------------------------------- // Straightforward IEnumerator methods. So subclasses needn't bother. // object IEnumerator.Current { get { return ((IEnumerator )this).Current; } } public virtual void Reset() { // (intentionally left blank) } //----------------------------------------------------------------------------------- // If the enumerator is disposed of before the query finishes, we need to ensure // we properly tear down the query such that exceptions are not lost. // public virtual void Dispose() { // If the enumerator is being disposed of before the query has finished, // we will wait for the query to finish. Cancellation should have already // been initiated, so we just need to ensure exceptions are propagated. if (!m_taskGroupState.IsAlreadyEnded) { Contract.Assert(m_taskGroupState.CancellationState.TopLevelDisposedFlag.Value); m_taskGroupState.QueryEnd(true); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // MergeEnumerator.cs // // [....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections; using System.Collections.Generic; using System.Diagnostics.Contracts; namespace System.Linq.Parallel { ////// Convenience class used by enumerators that merge many partitions into one. /// ///internal abstract class MergeEnumerator : IEnumerator { protected QueryTaskGroupState m_taskGroupState; //------------------------------------------------------------------------------------ // Initializes a new enumerator with the specified group state. // protected MergeEnumerator(QueryTaskGroupState taskGroupState) { Contract.Assert(taskGroupState != null); m_taskGroupState = taskGroupState; } //----------------------------------------------------------------------------------- // Abstract members of IEnumerator that must be implemented by concrete subclasses. // public abstract TInputOutput Current { get; } public abstract bool MoveNext(); //----------------------------------------------------------------------------------- // Straightforward IEnumerator methods. So subclasses needn't bother. // object IEnumerator.Current { get { return ((IEnumerator )this).Current; } } public virtual void Reset() { // (intentionally left blank) } //----------------------------------------------------------------------------------- // If the enumerator is disposed of before the query finishes, we need to ensure // we properly tear down the query such that exceptions are not lost. // public virtual void Dispose() { // If the enumerator is being disposed of before the query has finished, // we will wait for the query to finish. Cancellation should have already // been initiated, so we just need to ensure exceptions are propagated. if (!m_taskGroupState.IsAlreadyEnded) { Contract.Assert(m_taskGroupState.CancellationState.TopLevelDisposedFlag.Value); m_taskGroupState.QueryEnd(true); } } } } // 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
- ConnectionProviderAttribute.cs
- SelectionListDesigner.cs
- InvalidPropValue.cs
- ObjectDataSourceMethodEventArgs.cs
- DeclarativeCatalogPart.cs
- InfoCardAsymmetricCrypto.cs
- Span.cs
- ApplicationFileCodeDomTreeGenerator.cs
- PathSegment.cs
- LineMetrics.cs
- SrgsOneOf.cs
- MessageHeaderAttribute.cs
- EntityClassGenerator.cs
- ExecutedRoutedEventArgs.cs
- sitestring.cs
- EntityPropertyMappingAttribute.cs
- PartDesigner.cs
- ConnectionInterfaceCollection.cs
- FileResponseElement.cs
- OneOf.cs
- XamlPoint3DCollectionSerializer.cs
- TouchDevice.cs
- EventSinkHelperWriter.cs
- ExtenderProviderService.cs
- CacheChildrenQuery.cs
- PagesSection.cs
- RightsManagementInformation.cs
- MultiByteCodec.cs
- GiveFeedbackEvent.cs
- Restrictions.cs
- HttpConfigurationSystem.cs
- DrawingServices.cs
- PresentationSource.cs
- FormViewAutoFormat.cs
- MailAddress.cs
- KnownIds.cs
- AnnotationComponentManager.cs
- TypeLoadException.cs
- DataGridViewRowHeaderCell.cs
- ToolStripPanelSelectionGlyph.cs
- ListView.cs
- EdmScalarPropertyAttribute.cs
- ThreadInterruptedException.cs
- SpecularMaterial.cs
- cookie.cs
- IndividualDeviceConfig.cs
- ToolConsole.cs
- GridViewColumnCollectionChangedEventArgs.cs
- TextRangeAdaptor.cs
- RSAPKCS1SignatureDeformatter.cs
- PersonalizationProviderHelper.cs
- WebExceptionStatus.cs
- BaseInfoTable.cs
- AudioDeviceOut.cs
- BaseInfoTable.cs
- EntityDataSourceDesignerHelper.cs
- StylusLogic.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- FramingDecoders.cs
- SecurityUtils.cs
- DifferencingCollection.cs
- ModelPerspective.cs
- Expressions.cs
- MissingSatelliteAssemblyException.cs
- NotCondition.cs
- KerberosReceiverSecurityToken.cs
- IdnMapping.cs
- OutOfProcStateClientManager.cs
- TransactionContextValidator.cs
- _Rfc2616CacheValidators.cs
- ImpersonationContext.cs
- OperatingSystemVersionCheck.cs
- TabRenderer.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- ProtocolsConfigurationHandler.cs
- UnaryNode.cs
- DBConnection.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- PropertyMapper.cs
- Control.cs
- MetadataCache.cs
- ListItemParagraph.cs
- Converter.cs
- ObjectKeyFrameCollection.cs
- DiscoveryExceptionDictionary.cs
- DbInsertCommandTree.cs
- OdbcStatementHandle.cs
- Shape.cs
- EventProxy.cs
- TemplateLookupAction.cs
- FilterQueryOptionExpression.cs
- HttpChannelBindingToken.cs
- SafeFindHandle.cs
- IDataContractSurrogate.cs
- Decoder.cs
- ServiceHttpHandlerFactory.cs
- TemplateControlParser.cs
- AppearanceEditorPart.cs
- InvokeSchedule.cs
- WebPartsPersonalizationAuthorization.cs