C# 并行运行异步任务和一个实用程序函数

C# 并行运行异步任务和一个实用程序函数,c#,asynchronous,concurrency,task-parallel-library,C#,Asynchronous,Concurrency,Task Parallel Library,我有一个关于c#中并发性的问题。我有3个任务A、B、C,我正在使用 等待task.whalll(A,B,C)并行运行它们,然后像这样使用它们的结果: var aresult = A.Result; var bresult = B.Result; var cResult = C.Result; 最近我需要添加一个实用函数,它使用cResults并返回如下值:(此函数不是异步方法) 我知道任务A和B比任务C花费的时间要长得多,我希望优化流程,让任务(A和B)和(C和sortedResults(cR

我有一个关于c#中并发性的问题。我有3个任务A、B、C,我正在使用

等待
task.whalll(A,B,C)
并行运行它们,然后像这样使用它们的结果:

var aresult = A.Result;
var bresult = B.Result;
var cResult = C.Result;
最近我需要添加一个实用函数,它使用cResults并返回如下值:(此函数不是异步方法)

我知道任务A和B比任务C花费的时间要长得多,我希望优化流程,让任务(A和B)和(C和sortedResults(cResults))并行运行,以便我使用A和B处理C和sortedResults(cResults)花费的时间相同。我该怎么做

很抱歉发了这么长的帖子,非常感谢您的帮助。

等待任务。当所有(A,B,C)
不并行执行任务时。它所做的是,需要3个已经在执行的任务,并确保该方法在所有任务完成后继续执行。您已经开始通过创建
A
B
C
(可能是通过调用某个异步方法)并行执行任务


因此,如果你想要的语义是启动一个B和C,然后在C完成时做一些事情,然后在A和B完成时做一些其他事情,然后写出这些操作中的每一个。启动A、B和C就像调用3个异步方法一样简单,在
C
完成后做一些事情就像等待C一样简单,在A和B完成后做一些事情就像等待A和B一样简单(或者使用
Task.whalll
并提供这两个任务时,它将具有相同的效果)。

我想要的是任务A,B与任务C和sortResult(cResult)@pojroj并行运行,我描述的序列将实现这一点。
var sortedResult = SortResult(cResult);