Skip to Content
C# Cookbook
book

C# Cookbook

by Stephen Teilhet, Jay Hilyard
January 2004
Beginner to intermediate
864 pages
22h 18m
English
O'Reilly Media, Inc.
Content preview from C# Cookbook

15.7. Waiting for Worker Thread Completion

Problem

You have two threads currently running in your application. You need the main thread to wait until the worker thread has completed its processing. This ability comes in handy when your application is monitoring activities amongst multiple threads and you don’t want your main application thread to terminate until all of the workers are done processing.

Solution

Use the Thread.Join method to detect when a thread terminates:

class Worker
{
    static void Main( )
    {
        Run( );
    }

    static void Run( )
    {
        Thread worker = new Thread(new ThreadStart(WorkerThreadProc));
        worker.Start( );
        if(worker.Join(4000))
        {
            // worker thread ended ok
            Console.WriteLine("Worker Thread finished");
        }
        else
        {
            // timed out
            Console.WriteLine("Worker Thread timed out");
        }
    }

    static void WorkerThreadProc( )
    {
        Thread.Sleep(2000);
    }
}

Discussion

In the Worker class shown previously, the Run method starts off running in the context of the main thread. It then launches a worker thread; it then calls Join on it with a timeout set to four seconds. Since we know that the worker thread should not run for more than two seconds (see WorkerThreadProc), this should be sufficient time to see the worker thread terminate and for the main thread to finish and terminate in an orderly fashion.

It is very important to call Join only after the worker thread has been started, or you will get a ThreadStateException .

See Also

See the “Thread.Join Method” topic in the MSDN documentation.

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C# Cookbook

C# Cookbook

Joe Mayo
C# Cookbook, 2nd Edition

C# Cookbook, 2nd Edition

Jay Hilyard, Stephen Teilhet
ASP.NET Cookbook

ASP.NET Cookbook

Michael A Kittel, Geoffrey T. LeBlond

Publisher Resources

ISBN: 0596003390Supplemental ContentCatalog PageErrata