Mega Code Archive

 
Categories / C# Tutorial / Thread
 

Use IsAlive to wait for threads to end

using System;  using System.Threading;    class MyThread {    public int count;    public Thread thrd;      public MyThread(string name) {      count = 0;      thrd = new Thread(this.run);      thrd.Name = name;      thrd.Start();    }      void run() {      Console.WriteLine(thrd.Name + " starting.");        do {        Thread.Sleep(500);        Console.WriteLine("In " + thrd.Name +                          ", count is " + count);        count++;      } while(count < 10);        Console.WriteLine(thrd.Name + " terminating.");    }  }  class MainClass {    public static void Main() {      Console.WriteLine("Main thread starting.");        MyThread mt1 = new MyThread("Child #1");      MyThread mt2 = new MyThread("Child #2");      MyThread mt3 = new MyThread("Child #3");        do {        Console.Write(".");        Thread.Sleep(100);      } while (mt1.thrd.IsAlive &&               mt2.thrd.IsAlive &&               mt3.thrd.IsAlive);        Console.WriteLine("Main thread ending.");    }  } Main thread starting. Child #1 starting. Child #2 starting. Child #3 starting. .....In Child #1, count is 0 In Child #2, count is 0 In Child #3, count is 0 .....In Child #1, count is 1 In Child #2, count is 1 In Child #3, count is 1 ....In Child #1, count is 2 In Child #2, count is 2 In Child #3, count is 2 .....In Child #1, count is 3 In Child #2, count is 3 In Child #3, count is 3 ....In Child #1, count is 4 In Child #2, count is 4 In Child #3, count is 4 .....In Child #1, count is 5 In Child #2, count is 5 In Child #3, count is 5 .....In Child #1, count is 6 In Child #2, count is 6 In Child #3, count is 6 ....In Child #1, count is 7 In Child #2, count is 7 In Child #3, count is 7 .....In Child #1, count is 8 In Child #2, count is 8 In Child #3, count is 8 ....In Child #1, count is 9 Child #1 terminating. In Child #2, count is 9 Child #2 terminating. In Child #3, count is 9 Child #3 terminating. Main thread ending.