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 ParallelQueryCast () { 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 IEnumeratorGetEnumerator() { 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
- Emitter.cs
- SizeAnimation.cs
- PackageProperties.cs
- JsonDeserializer.cs
- StylusSystemGestureEventArgs.cs
- ConfigXmlDocument.cs
- EventEntry.cs
- Row.cs
- InvokePattern.cs
- MissingFieldException.cs
- UTF8Encoding.cs
- UriScheme.cs
- HwndSourceKeyboardInputSite.cs
- LogLogRecord.cs
- DBDataPermission.cs
- XmlObjectSerializerContext.cs
- RewritingPass.cs
- FileDialogCustomPlacesCollection.cs
- SecurityTokenSerializer.cs
- MenuItemCollection.cs
- nulltextcontainer.cs
- HebrewCalendar.cs
- DesignerListAdapter.cs
- ThreadPool.cs
- CachingHintValidation.cs
- OperandQuery.cs
- SynchronizedPool.cs
- JulianCalendar.cs
- AssemblyResolver.cs
- Graphics.cs
- TextClipboardData.cs
- StorageEntityContainerMapping.cs
- BinaryConverter.cs
- CategoryEditor.cs
- ReferencedCollectionType.cs
- ZipIOFileItemStream.cs
- unsafenativemethodsother.cs
- BindUriHelper.cs
- BlurBitmapEffect.cs
- LinearGradientBrush.cs
- UnsafeNativeMethods.cs
- DesignTimeType.cs
- MdiWindowListStrip.cs
- FormViewInsertedEventArgs.cs
- ValidatorCompatibilityHelper.cs
- DataGridViewColumnCollection.cs
- XmlUtil.cs
- XmlAttributes.cs
- RoutedEventArgs.cs
- MenuItemBinding.cs
- InvalidCommandTreeException.cs
- _TLSstream.cs
- ProfileSection.cs
- MediaElementAutomationPeer.cs
- SafeNativeMethods.cs
- ListViewDeleteEventArgs.cs
- HMACMD5.cs
- InstanceCollisionException.cs
- WebFormsRootDesigner.cs
- NativeMethods.cs
- BitmapData.cs
- ContentFileHelper.cs
- PathData.cs
- MemberDescriptor.cs
- WindowsServiceElement.cs
- InternalConfigSettingsFactory.cs
- CaseInsensitiveHashCodeProvider.cs
- DBDataPermissionAttribute.cs
- ManagedFilter.cs
- GridViewCellAutomationPeer.cs
- ScaleTransform.cs
- HeaderCollection.cs
- InternalConfigRoot.cs
- ArrayHelper.cs
- AppearanceEditorPart.cs
- QuotedPrintableStream.cs
- NullableFloatSumAggregationOperator.cs
- ConnectionStringSettingsCollection.cs
- TextSchema.cs
- SafeLibraryHandle.cs
- Mapping.cs
- QuarticEase.cs
- FontConverter.cs
- ConsumerConnectionPointCollection.cs
- StateItem.cs
- AmbientProperties.cs
- ParserHooks.cs
- Version.cs
- TimeSpanConverter.cs
- WebPartUserCapability.cs
- EntityWithKeyStrategy.cs
- XmlStringTable.cs
- XmlAttributeCollection.cs
- TextEditorCopyPaste.cs
- DesignerActionService.cs
- DynamicMethod.cs
- ChangeDirector.cs
- VectorCollection.cs
- EmptyQuery.cs
- TextEditorDragDrop.cs