Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ExecuteAndGetResultsAsArray()

TOutput[] System.Linq.Parallel.QueryOperator< TOutput >.ExecuteAndGetResultsAsArray ( )
inlinepackageinherited

Definition at line 77 of file QueryOperator.cs.

78 {
79 QuerySettings querySettings = base.SpecifiedQuerySettings.WithPerExecutionSettings().WithDefaults();
80 QueryLifecycle.LogicalQueryExecutionBegin(querySettings.QueryId);
81 try
82 {
83 if (querySettings.ExecutionMode.Value == ParallelExecutionMode.Default && LimitsParallelism)
84 {
85 IEnumerable<TOutput> source = AsSequentialQuery(querySettings.CancellationState.ExternalCancellationToken);
86 IEnumerable<TOutput> source2 = CancellableEnumerable.Wrap(source, querySettings.CancellationState.ExternalCancellationToken);
87 return ExceptionAggregator.WrapEnumerable(source2, querySettings.CancellationState).ToArray();
88 }
90 if (querySettings.CancellationState.MergedCancellationToken.IsCancellationRequested)
91 {
92 querySettings.CancellationState.ExternalCancellationToken.ThrowIfCancellationRequested();
93 throw new OperationCanceledException();
94 }
95 if (queryResults.IsIndexible && OutputOrdered)
96 {
98 arrayMergeHelper.Execute();
99 TOutput[] resultsAsArray = arrayMergeHelper.GetResultsAsArray();
100 querySettings.CleanStateAtQueryEnd();
101 return resultsAsArray;
102 }
104 queryResults.GivePartitionedStream(partitionedStreamMerger);
105 TOutput[] resultsAsArray2 = partitionedStreamMerger.MergeExecutor.GetResultsAsArray();
106 querySettings.CleanStateAtQueryEnd();
107 return resultsAsArray2;
108 }
109 finally
110 {
111 QueryLifecycle.LogicalQueryExecutionEnd(querySettings.QueryId);
112 }
113 }
IEnumerable< TOutput > AsSequentialQuery(CancellationToken token)
QueryResults< TOutput > GetQueryResults(QuerySettings querySettings)

References System.Linq.Parallel.QueryOperator< TOutput >.AsSequentialQuery(), System.Linq.Parallel.QueryOperator< TOutput >.GetQueryResults(), System.Linq.Parallel.QueryOperator< TOutput >.LimitsParallelism, System.Linq.Parallel.QueryLifecycle.LogicalQueryExecutionBegin(), System.Linq.Parallel.QueryLifecycle.LogicalQueryExecutionEnd(), System.Linq.Parallel.QueryOperator< TOutput >.OutputOrdered, and System.Linq.source.