我想确保正确使用 ContinueWhenAll。我有许多将运行异步的调用,然后我只想在其他任务成功完成并且对结果进行一些计算以查看是否应该停止处理并返回禁止的 HTTP 之后才完成最终任务结果。我不确定的是最后一行是否真的会等待所有其他任务完成,或者我是否需要以不同的方式构造它。如果是这样,应该如何构造最后一行,以便只有在我通过 if(getPlatformTask.Result...
// run some tasks and then gather them here
Task.Factory.ContinueWhenAll(new Task[]{ getPlatformTask, getUserTask },
(tasks) =>
{
Task.WaitAll(tasks);
if (getPlatformTask.Result == null || getUserTask.Result == null)
{
return Task<HttpResponseMessage>.Factory.StartNew(() =>
{
return new HttpResponseMessage(HttpStatusCode.Forbidden);
});
}
});
// will this line below get called before the inner task above completes?
return base.SendAsync(request, cancellationToken);