Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Enumerables / ParallelQuery.cs / 1305376 / ParallelQuery.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
//
// ParallelQuery.cs
//
// [....]
//
// ParallelQuery is an abstract class that represents a PLINQ query.
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
using System.Collections;
using System.Collections.Generic;
using System.Linq.Parallel;
using System.Diagnostics.Contracts;
namespace System.Linq
{
///
/// Represents a parallel sequence.
///
public class ParallelQuery : IEnumerable
{
// Settings that have been specified on the query so far.
private QuerySettings m_specifiedSettings;
internal ParallelQuery(QuerySettings specifiedSettings)
{
m_specifiedSettings = specifiedSettings;
}
//------------------------------------------------------------------------------------
// Settings that have been specified on the query so far. Some settings may still
// be unspecified and will be replaced either by operators further in the query,
// or filled in with defaults at query opening time.
//
internal QuerySettings SpecifiedQuerySettings
{
get { return m_specifiedSettings; }
}
//-----------------------------------------------------------------------------------
// Returns a parallel enumerable that represents 'this' enumerable, with each element
// casted to TCastTo. If some element is not of type TCastTo, InvalidCastException
// is thrown.
//
internal virtual ParallelQuery Cast()
{
Contract.Assert(false, "The derived class must override this method.");
throw new NotSupportedException();
}
//-----------------------------------------------------------------------------------
// Returns a parallel enumerable that represents 'this' enumerable, with each element
// casted to TCastTo. Elements that are not of type TCastTo will be left out from
// the results.
//
internal virtual ParallelQuery OfType()
{
Contract.Assert(false, "The derived class must override this method.");
throw new NotSupportedException();
}
//-----------------------------------------------------------------------------------
// Derived classes implement GetEnumeratorUntyped() instead of IEnumerable.GetEnumerator()
// This is to avoid the method name conflict if the derived classes also implement
// IEnumerable.
//
internal virtual IEnumerator GetEnumeratorUntyped()
{
Contract.Assert(false, "The derived class must override this method.");
throw new NotSupportedException();
}
///
/// Returns an enumerator that iterates through the sequence.
///
/// An enumerator that iterates through the sequence.
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumeratorUntyped();
}
}
///
/// Represents a parallel sequence.
///
public class ParallelQuery : ParallelQuery, IEnumerable
{
internal ParallelQuery(QuerySettings settings)
: base(settings)
{
}
internal sealed override ParallelQuery Cast()
{
return ParallelEnumerable.Select(this, elem => (TCastTo)(object)elem);
}
internal sealed override ParallelQuery OfType()
{
// @PERF: Currently defined in terms of other operators. This isn't the most performant
// solution (because it results in two operators) but is simple to implement.
return this
.Where(elem => elem is TCastTo)
.Select(elem => (TCastTo)(object)elem);
}
internal override IEnumerator GetEnumeratorUntyped()
{
return ((IEnumerable)this).GetEnumerator();
}
///
/// Returns an enumerator that iterates through the sequence.
///
/// An enumerator that iterates through the sequence.
public virtual IEnumerator GetEnumerator()
{
Contract.Assert(false, "The derived class must override this method.");
throw new NotSupportedException();
}
}
}
// 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
- ConstraintStruct.cs
- DBNull.cs
- VScrollBar.cs
- SubtreeProcessor.cs
- ProcessStartInfo.cs
- _ChunkParse.cs
- PageThemeBuildProvider.cs
- MenuItem.cs
- TreeNodeCollection.cs
- QuestionEventArgs.cs
- PartBasedPackageProperties.cs
- QilTargetType.cs
- SubMenuStyleCollection.cs
- GeometryHitTestResult.cs
- Size.cs
- DescendantOverDescendantQuery.cs
- DtdParser.cs
- DataRowChangeEvent.cs
- GroupByExpressionRewriter.cs
- FlowDocumentReaderAutomationPeer.cs
- QuadraticBezierSegment.cs
- TextProperties.cs
- NameValuePair.cs
- StringBuilder.cs
- BindingNavigator.cs
- HttpDebugHandler.cs
- SchemaCollectionPreprocessor.cs
- NamespaceInfo.cs
- FontUnitConverter.cs
- KeysConverter.cs
- MLangCodePageEncoding.cs
- ReadOnlyDictionary.cs
- TypeResolver.cs
- ResourceKey.cs
- Misc.cs
- ViewDesigner.cs
- EventlogProvider.cs
- WebPartZoneBaseDesigner.cs
- PriorityChain.cs
- ELinqQueryState.cs
- XmlSignificantWhitespace.cs
- SizeConverter.cs
- DiffuseMaterial.cs
- HttpStaticObjectsCollectionBase.cs
- XpsSerializationManagerAsync.cs
- FrameworkElement.cs
- BulletedListEventArgs.cs
- SafePEFileHandle.cs
- DeleteHelper.cs
- SizeValueSerializer.cs
- GroupLabel.cs
- FieldBuilder.cs
- DataGridViewColumnCollectionDialog.cs
- XsltQilFactory.cs
- PartitionedStreamMerger.cs
- URLString.cs
- TiffBitmapDecoder.cs
- unitconverter.cs
- ClientCultureInfo.cs
- ColumnMapVisitor.cs
- ImageMap.cs
- WebPartCatalogAddVerb.cs
- ObjectViewEntityCollectionData.cs
- HuffCodec.cs
- RoutedEventHandlerInfo.cs
- LinqDataSourceDisposeEventArgs.cs
- VirtualDirectoryMapping.cs
- FrameworkContextData.cs
- ObjectReaderCompiler.cs
- HtmlPhoneCallAdapter.cs
- DataViewSetting.cs
- ApplicationException.cs
- KeyedHashAlgorithm.cs
- PropertyMetadata.cs
- SR.cs
- CodeSnippetExpression.cs
- ListCardsInFileRequest.cs
- mactripleDES.cs
- QuarticEase.cs
- ToolStripDropDownDesigner.cs
- HyperLinkColumn.cs
- ResourceAttributes.cs
- Point.cs
- ExternalCalls.cs
- HwndSubclass.cs
- ConfigXmlElement.cs
- FactoryGenerator.cs
- ListMarkerSourceInfo.cs
- DataBindingCollectionConverter.cs
- ProfilePropertySettingsCollection.cs
- RSAOAEPKeyExchangeFormatter.cs
- UnaryQueryOperator.cs
- SupportingTokenListenerFactory.cs
- FixedPage.cs
- WebPartConnection.cs
- ImportContext.cs
- PtsPage.cs
- SwitchExpression.cs
- SimpleNameService.cs
- NetworkInterface.cs