Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- IconBitmapDecoder.cs
- XamlPoint3DCollectionSerializer.cs
- XmlSchemaSimpleContentExtension.cs
- ConnectionOrientedTransportChannelFactory.cs
- StackOverflowException.cs
- SafeNativeMethodsMilCoreApi.cs
- CanExpandCollapseAllConverter.cs
- OpenTypeCommon.cs
- Rectangle.cs
- ping.cs
- CallContext.cs
- SoapObjectWriter.cs
- Validator.cs
- CleanUpVirtualizedItemEventArgs.cs
- AccessDataSource.cs
- SourceFileInfo.cs
- Point3DAnimationBase.cs
- XmlAnyElementAttributes.cs
- TypePresenter.xaml.cs
- XamlWrappingReader.cs
- SchemaNamespaceManager.cs
- SafeHandle.cs
- OdbcConnectionOpen.cs
- DataGridLengthConverter.cs
- TextSpanModifier.cs
- FileSystemInfo.cs
- TextRangeBase.cs
- DataGridParentRows.cs
- FloatSumAggregationOperator.cs
- PrintDialog.cs
- DataServiceRequestException.cs
- TraceSource.cs
- KnownIds.cs
- SelectionGlyph.cs
- DWriteFactory.cs
- VBCodeProvider.cs
- ToolStripItemImageRenderEventArgs.cs
- util.cs
- UpdateInfo.cs
- RenderOptions.cs
- TemplateBuilder.cs
- ArrayList.cs
- CommandHelpers.cs
- SqlMethods.cs
- SoapHttpTransportImporter.cs
- GeometryHitTestParameters.cs
- RadialGradientBrush.cs
- PopupControlService.cs
- WebRequestModulesSection.cs
- CTreeGenerator.cs
- ClassGenerator.cs
- LocatorGroup.cs
- DataGridTextBoxColumn.cs
- ReadOnlyCollection.cs
- InkCanvasFeedbackAdorner.cs
- TabControlToolboxItem.cs
- ErrorRuntimeConfig.cs
- Size.cs
- ContentElementAutomationPeer.cs
- ToolStripManager.cs
- TextEvent.cs
- XmlEncoding.cs
- OdbcTransaction.cs
- AudioFormatConverter.cs
- CTreeGenerator.cs
- Timer.cs
- LongSumAggregationOperator.cs
- XmlSerializableReader.cs
- ApplicationBuildProvider.cs
- TypeExtensionSerializer.cs
- CodeDomLoader.cs
- PenThreadPool.cs
- DesignerHierarchicalDataSourceView.cs
- CachedPathData.cs
- HTTPRemotingHandler.cs
- DelegateHelpers.Generated.cs
- CodeConditionStatement.cs
- LinqDataSourceContextEventArgs.cs
- CodeParameterDeclarationExpression.cs
- ScopedKnownTypes.cs
- ReferentialConstraint.cs
- KnownBoxes.cs
- COM2PropertyDescriptor.cs
- mansign.cs
- XMLSyntaxException.cs
- AdapterDictionary.cs
- Pen.cs
- SiteMapNodeItemEventArgs.cs
- WindowsScrollBar.cs
- TemplateXamlTreeBuilder.cs
- RoleGroup.cs
- InputGestureCollection.cs
- ResourceType.cs
- SystemIPInterfaceProperties.cs
- TextElementEnumerator.cs
- SQLInt16.cs
- ButtonStandardAdapter.cs
- MaskPropertyEditor.cs
- GetCryptoTransformRequest.cs
- XmlSchemaComplexContentRestriction.cs