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

  • Home
  • SEARCH
  • 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 7446299
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T12:16:52+00:00 2026-05-29T12:16:52+00:00

I have the following utility: class Worker { public void DoWorkAsync(Action callback) { Action

  • 0

I have the following utility:

class Worker
{
  public void DoWorkAsync(Action callback)
  {
    Action work = () => Thread.Sleep(3000);
    AsyncCallback asyncCallback = (result) => callback();
    work.BeginInvoke(asyncCallback, null);
  }
}

I use it like the following:

static void Main(string[] args)
{
  var worker = new Worker();
  worker.DoWorkAsync(() => Console.WriteLine("Completed."));

  Console.WriteLine("Hello world!");
  Console.ReadKey();
}

This will of course print Hello world! before Completed., since the worker works asynchronously.

My question is how can I block my thread so it should wait until the action is completed, then move on.

I know I can do it like this:

static void Main(string[] args)
{
  var worker = new Worker();
  worker.DoWorkAsync(() =>
    {
      Console.WriteLine("Completed.");
      MoveOn();
    });

  Console.ReadKey();
}

static void MoveOn()
{
  Console.WriteLine("Hello world!");
}

But since I have a bunch of cascaded async callbacks that should be executed one after the other (conditionally), I want them all to execute synchronously, so is there a more elegant way to wait for an async method that takes a callback as a param?

Note: Just to make sure, I cannot alter the behavior of the Worker class, its an external utility and I don’t have access to its code.

Update

In my particular scenario I’m trying to interact with user from the ViewModel and get responses from him. My code is executed in the view-model and there is a method controlling a chain of cascaded interactions, I want this method should decide whether to fire a certain interaction or not. I tried SLaxs’ answer, and also tried this but it doesn’t seem to work, any ideas on how to make the main method the only controller of the interactions?

  • 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-29T12:16:53+00:00Added an answer on May 29, 2026 at 12:16 pm

    Create a ManualResetEvent, call Set() in the callback, and call WaitOne() to wait for the operation to finish.

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

Sidebar

Related Questions

I have following classes. class A { public: void fun(); } class B: public
I have a static utility class, FileUtils which has the following method: public static
I have written the following Utility class to get an instance of any class
i have following code #include <iostream> #include <utility> using namespace std; namespace rel_ops{ template<class
I have the following code. The intent is to have this utility class that
I have a method like the following in a utility class. I would like
I have following abstract factory: #include MediaDevice.h class MediaFactory { public: MediaFactory(); virtual ~MediaFactory();
I have to write a common utility class that does following: Input: 2 objects
Assuming I have the following classes in an application: A base class: public abstract
I have a following static method in one of my utility class + (UIImage

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.