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
- ProfileProvider.cs
- CellParaClient.cs
- ViewService.cs
- TableParagraph.cs
- AppDomainProtocolHandler.cs
- CodeGenHelper.cs
- StorageMappingItemLoader.cs
- ObjectIDGenerator.cs
- MetadataPropertyAttribute.cs
- FlowDocumentPage.cs
- DynamicObjectAccessor.cs
- NamespaceImport.cs
- ContractMapping.cs
- ResXResourceSet.cs
- Site.cs
- PropertyEntry.cs
- TypeListConverter.cs
- DataControlReference.cs
- TreeNode.cs
- ToolStripControlHost.cs
- TabPage.cs
- BaseDataList.cs
- QueryMatcher.cs
- OleCmdHelper.cs
- NativeMethodsCLR.cs
- WebPartExportVerb.cs
- ParameterInfo.cs
- AdRotator.cs
- FilterQuery.cs
- AttachedPropertyMethodSelector.cs
- WorkflowItemPresenter.cs
- TemplateControlCodeDomTreeGenerator.cs
- QilScopedVisitor.cs
- EditorPartChrome.cs
- StdValidatorsAndConverters.cs
- DataSetViewSchema.cs
- ThrowHelper.cs
- SamlAssertionKeyIdentifierClause.cs
- PasswordTextContainer.cs
- ComplexLine.cs
- Attributes.cs
- _ListenerAsyncResult.cs
- StringUtil.cs
- DesignerWebPartChrome.cs
- SqlNamer.cs
- AttributeData.cs
- StringCollectionEditor.cs
- IpcChannelHelper.cs
- Label.cs
- DPCustomTypeDescriptor.cs
- RightsManagementUser.cs
- SQLSingle.cs
- DataBindingHandlerAttribute.cs
- AuthenticationModuleElement.cs
- InstanceView.cs
- SiteMapNodeItemEventArgs.cs
- ListViewUpdateEventArgs.cs
- XmlQueryStaticData.cs
- XmlDataSourceDesigner.cs
- HttpCookie.cs
- XmlAnyElementAttributes.cs
- XmlElementAttribute.cs
- ValidationUtility.cs
- PipelineModuleStepContainer.cs
- TransformerInfo.cs
- RenderData.cs
- DesignerForm.cs
- HMACSHA512.cs
- XPathMultyIterator.cs
- HttpDictionary.cs
- LongMinMaxAggregationOperator.cs
- CodeNamespaceImportCollection.cs
- SessionStateItemCollection.cs
- BamlTreeNode.cs
- WebPartsPersonalization.cs
- ByteStreamBufferedMessageData.cs
- DeploymentExceptionMapper.cs
- IsolatedStorage.cs
- NameValueFileSectionHandler.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- ErrorStyle.cs
- XmlQueryType.cs
- TextServicesDisplayAttributePropertyRanges.cs
- XXXOnTypeBuilderInstantiation.cs
- StringWriter.cs
- PreviewPrintController.cs
- DecimalStorage.cs
- ArgIterator.cs
- SqlDataSourceConfigureSelectPanel.cs
- ErrorFormatterPage.cs
- Exceptions.cs
- LinkButton.cs
- SQLDateTime.cs
- ErrorTableItemStyle.cs
- ObjectDataSourceMethodEventArgs.cs
- ResourceIDHelper.cs
- PolyQuadraticBezierSegment.cs
- RNGCryptoServiceProvider.cs
- Debug.cs
- StylusDownEventArgs.cs