Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7582217
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T18:22:57+00:00 2026-05-30T18:22:57+00:00

I want to make sure that I am using ContinueWhenAll appropriately. I have a

  • 0

I want to make sure that I am using ContinueWhenAll appropriately. I have a number of calls which will run asynch and then I want to complete to a final task only after the other tasks have completed successfully and after I do some calcs on the results to see if I should instead stop processing and return a forbidden HTTP result. What I am unsure about is whether the final line will actually wait for all the other tasks to complete, or whether I need to structure it differently. If so, how should the last line be structured so that it is called ONLY if I get past the evaluation of 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);       
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-30T18:22:58+00:00Added an answer on May 30, 2026 at 6:22 pm

    If you want to block the current thread until all the tasks complete, you can simply use Task.WaitAll(), no need to use continuation tasks. But keep in mind that blocked thread is a thread that does nothing but use up resources (like memory). Blocking a thread is often easier, but less efficient way to do things.

    The code might look like this:

    // run the tasks
    
    Task.WaitAll(getPlatformTask, getUserTask);
    
    // process the results
    
    return base.SendAsync(request, cancellationToken);
    

    And no, in your version, the last line can (and most likely will) execute before all the tasks are complete. ContinueWhenAll() does not block, that’s the whole point of it.

    EDIT: I just realized that your method returns a Task. So you actually don’t have to block the thread, you can instead return a Task that is completed when all the work is done. It could look like this:

    // run the tasks
    
    var result = Task.Factory.ContinueWhenAll(
        new[] { getPlatformTask, getUserTask },
        _ =>
        {
            // process the results
    
            return base.SendAsync(request, cancellationToken);
        });
    
    return result.Unwrap();
    

    Here, result is Task<Task<HttpResponseMessage>>, but you need just Task<HttpResponseMessage>. To do that, you can use the Unwrap() method.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am using APEX 3.2 and I want to make sure that a text
I have the following code; I want to make sure that submit does not
i want to make sure that only one instance of application run... i added
I want to make sure that my web application is performance wise and will
I'm using $().each() to loop through some items. I want to make sure that
I want to make sure that a set of functions have the same signature
I have very simple query. I want to make sure that I don't have
I want to make sure that if any error occurs during the database processing
I want to make sure that all 3 conditions result in the same answer
I want to make sure that no value is cut off in a workbook

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.