Csharp/C Sharp/Thread/Thread Join
Threads:Joining
<source lang="csharp">
using System; using System.Threading; class ThreadSleeper {
int seconds; private ThreadSleeper(int seconds) { this.seconds = seconds; } public void Nap() { Console.WriteLine("Napping {0} seconds", seconds); Thread.Sleep(seconds * 1000); } public static Thread DoSleep(int seconds) { ThreadSleeper ts = new ThreadSleeper(seconds); Thread thread = new Thread(new ThreadStart(ts.Nap)); thread.Start(); return(thread); }
} public class OperationsThreadsJoining {
public static void Main() { Thread thread = ThreadSleeper.DoSleep(5); Console.WriteLine("Waiting for thread to join"); thread.Join(); Console.WriteLine("Thread Joined"); }
}
</source>
Use Join()
<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852
- /
// Use Join().
using System; using System.Threading;
class MyThread {
public int count; public Thread thrd; public MyThread(string name) { count = 0; thrd = new Thread(new ThreadStart(this.run)); thrd.Name = name; thrd.Start(); } // Entry point of thread. 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."); }
}
// Use Join() to wait for threads to end. public class JoinThreads {
public static void Main() { Console.WriteLine("Main thread starting."); // Construct three threads. MyThread mt1 = new MyThread("Child #1"); MyThread mt2 = new MyThread("Child #2"); MyThread mt3 = new MyThread("Child #3"); mt1.thrd.Join(); Console.WriteLine("Child #1 joined."); mt2.thrd.Join(); Console.WriteLine("Child #2 joined."); mt3.thrd.Join(); Console.WriteLine("Child #3 joined."); Console.WriteLine("Main thread ending."); }
}
</source>