Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Merging / ArrayMergeHelper.cs / 1305376 / ArrayMergeHelper.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // ArrayMergeHelper.cs // //[....] // // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq.Parallel; using System.Diagnostics; using System.Threading.Tasks; namespace System.Linq.Parallel { ////// A special merge helper for indexible queries. Given an indexible query, we know how many elements /// we'll have in the result set, so we can allocate the array ahead of time. Then, as each result element /// is produced, we can directly insert it into the appropriate position in the output array, paying /// no extra cost for ordering. /// ///internal class ArrayMergeHelper : IMergeHelper { private QueryResults m_queryResults; // Indexible query results private TInputOutput[] m_outputArray; // The output array. private QuerySettings m_settings; // Settings for the query. /// /// Instantiates the array merge helper. /// /// The query settings /// The query results public ArrayMergeHelper(QuerySettings settings, QueryResultsqueryResults) { m_settings = settings; m_queryResults = queryResults; int count = m_queryResults.Count; m_outputArray = new TInputOutput[count]; } /// /// A method used as a delegate passed into the ForAll operator /// private void ToArrayElement(int index) { m_outputArray[index] = m_queryResults[index]; } ////// Schedules execution of the merge itself. /// public void Execute() { ParallelQueryquery = ParallelEnumerable.Range(0, m_queryResults.Count); query = new QueryExecutionOption (QueryOperator .AsQueryOperator(query), m_settings); query.ForAll(ToArrayElement); } /// /// Gets the enumerator over the results. /// /// We never expect this method to be called. ArrayMergeHelper is intended to be used when we want /// to consume the results using GetResultsAsArray(). /// public IEnumeratorGetEnumerator() { Debug.Assert(false, "ArrayMergeHelper<>.GetEnumerator() is not intended to be used. Call GetResultsAsArray() instead."); return ((IEnumerable )GetResultsAsArray()).GetEnumerator(); } /// /// Returns the merged results as an array. /// ///public TInputOutput[] GetResultsAsArray() { Debug.Assert(m_outputArray != null); return m_outputArray; } } } // 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
- XmlCharCheckingReader.cs
- OdbcInfoMessageEvent.cs
- CreateUserWizardStep.cs
- TextCollapsingProperties.cs
- InputReferenceExpression.cs
- IntegerFacetDescriptionElement.cs
- XslTransform.cs
- TemplateBuilder.cs
- CfgParser.cs
- SpnegoTokenProvider.cs
- CommonProperties.cs
- ServiceObjectContainer.cs
- PasswordBox.cs
- DropShadowBitmapEffect.cs
- HtmlImage.cs
- JsonClassDataContract.cs
- ItemCollection.cs
- CommandBinding.cs
- SystemInfo.cs
- ConditionedDesigner.cs
- BitmapEffectGroup.cs
- BooleanAnimationBase.cs
- DispatcherHooks.cs
- _FtpDataStream.cs
- MemoryFailPoint.cs
- Interop.cs
- ListViewCancelEventArgs.cs
- ScriptServiceAttribute.cs
- TextAdaptor.cs
- RelationshipWrapper.cs
- SelectionHighlightInfo.cs
- ImageMap.cs
- ListBoxChrome.cs
- SchemaElementDecl.cs
- TextEffect.cs
- WindowsStreamSecurityElement.cs
- DefaultBinder.cs
- RelationshipConverter.cs
- _NtlmClient.cs
- WriteableBitmap.cs
- GenericUriParser.cs
- CalloutQueueItem.cs
- StateBag.cs
- ParserContext.cs
- Size.cs
- XdrBuilder.cs
- StoragePropertyMapping.cs
- Exceptions.cs
- ParsedAttributeCollection.cs
- EdmRelationshipRoleAttribute.cs
- MergeFailedEvent.cs
- InternalConfigSettingsFactory.cs
- Attribute.cs
- OrderByBuilder.cs
- FileClassifier.cs
- SrgsElementList.cs
- FacetDescription.cs
- JsonDeserializer.cs
- CompiledRegexRunnerFactory.cs
- WindowsListViewGroupSubsetLink.cs
- MediaElement.cs
- AlphabeticalEnumConverter.cs
- Style.cs
- ControlValuePropertyAttribute.cs
- StrokeCollectionConverter.cs
- BCLDebug.cs
- SettingsSavedEventArgs.cs
- DecoderNLS.cs
- GuidelineCollection.cs
- DynamicILGenerator.cs
- ISAPIApplicationHost.cs
- UIElementCollection.cs
- WorkflowRuntimeServiceElementCollection.cs
- SharedUtils.cs
- XmlWrappingReader.cs
- URI.cs
- AsyncPostBackErrorEventArgs.cs
- ClientSession.cs
- WmfPlaceableFileHeader.cs
- ListBindingConverter.cs
- VectorAnimationBase.cs
- Style.cs
- ClientUrlResolverWrapper.cs
- PenLineJoinValidation.cs
- LabelEditEvent.cs
- SoapEnvelopeProcessingElement.cs
- WorkflowOwnershipException.cs
- Translator.cs
- DoubleAverageAggregationOperator.cs
- XmlSchemaSubstitutionGroup.cs
- ClientFormsAuthenticationMembershipProvider.cs
- ConfigurationLocation.cs
- BitmapEffectOutputConnector.cs
- ButtonFieldBase.cs
- BitmapEffectGroup.cs
- SqlCacheDependencyDatabase.cs
- TextElementEnumerator.cs
- NativeDirectoryServicesQueryAPIs.cs
- LexicalChunk.cs
- MailBnfHelper.cs