我有一个任务列表,我想并行执行,但其中一些只能在其他作业完成后才能开始。例如:作业A和B可以立即开始,作业C可以在A完成时开始,工作D可以在A和B同时完成时开始。我希望我能创建所有的任务,开始其中的一些,然后当每个任务完成后,检查我是否可以开始其他任务。StartJobs(); //to start other jobs depending on this one不幸的是,这是行不通的-- Task.WhenAll是在一些任务还在运行的时候完成的如果我正
我看到CancellationToken和CancellationTokenSource都有IsCancellationRequested getter方法。大多数示例将CancellationToken传递给在Task中执行的方法。在我看来,使用任何这些,调用都可以返回。如果我使用IsCancellationRequested of CancellationTokenSource,这会是个问题吗?当我应该抛出异常时(通过使用ThrowIfCancellationRequested),或者如果有取消请求,我应该从方法返回,如下面的代码所示。{
//If C
我正在使用任务并行库,并且正在使用任务工厂来创建和启动一个新任务列表。在启动任务之后,我调用了Task.WaitAll(...)等待所有任务返回。代码类似于下面的代码。/Create List of Tasks and Start using TaskFactory.StartNew(..) etc.当我的任务返回并完成时,如果它们满足一定的条件,结果将被聚合到一个列表中,以便稍后处理。当每个任务都在运行时