C# .Net 4.0 Console App – how to stay alive until all threads complete?


Possible Duplicate:
C#: Waiting for all threads to complete

I have a console app that spawns some threads and then exits. Each thread takes roughly ~20 seconds to complete. It appears as though the console app is spawning the threads and then exiting before the threads have a chance to complete.

How do I tell the console app not to exit until all threads it has spawned have completed?

Best Solution

You can to use a CountDownEvent.

using System;
using System.Collections.Generic;
using System.Threading;

namespace ConsoleApplication1
    class Program
        static CountdownEvent countdown;

        static void Main(string[] args)
            countdown = new CountdownEvent(1);
            for (int i = 1; i < 5; i++)
                countdown.AddCount(); //add a count for each (BEFORE starting thread .. Thanks, Brian!)
                //do stuff to start background thread
            countdown.Signal(); //subtract your initial count
            countdown.Wait(); //wait until countdown reaches zero

        static void backgroundwork()
            countdown.Signal(); //signal this thread's completion (subtract one from count)
Related Question