* roottypes.cs: Rename from tree.cs.
[mono.git] / mono / tests / autoresetevents.cs
1 using System;
2 using System.Threading;
3
4 class EventTest
5 {  
6         public static AutoResetEvent e;
7
8         // Code for first thread
9         public static void ThreadMethod_waiter_1()
10         {       
11         Console.WriteLine("[Thread A] - Started.....");
12         Console.WriteLine("[Thread A] - I'm before wait for event .....");
13         e.WaitOne();    
14         Console.WriteLine("[Thread A] - I'm after wait for event.");
15         Console.WriteLine("[Thread A] - I now set again the event to let other thread continue.");
16         e.Set();        
17         }
18     
19         // Code for second thread
20         public static void ThreadMethod_waiter_2()
21         {       
22         Console.WriteLine("[Thread B] - Started.....");
23         Console.WriteLine("[Thread B] - I'm before wait for event .....");
24         e.WaitOne();    
25         Console.WriteLine("[Thread B] - I'm after wait for event.");
26         Console.WriteLine("[Thread B] - I now set again the event to let other thread continue.");
27         e.Set();
28         }
29
30     // Code for 3th thread
31     public static void ThreadMethod_blocker()
32     {
33         Console.WriteLine("[Thread C] - Started.....");
34         Console.WriteLine("[Thread C] - Sleeping for 5000ms....");
35         Thread.Sleep(5000);
36         Console.WriteLine("[Thread C] - Setting the event....");
37         e.Set();
38         Console.WriteLine("[Thread C] - Finished.....");
39     }
40     
41     
42     public static void Main()
43     {           
44         e = new AutoResetEvent(false);
45
46         
47         // Create the waiter thread's group
48         Console.WriteLine("[  Main  ] - Creating first thread..");
49         ThreadStart Thread_1 = new ThreadStart(ThreadMethod_waiter_1);
50         ThreadStart Thread_2 = new ThreadStart(ThreadMethod_waiter_2);
51         
52         // Create the blocker thread
53         Console.WriteLine("[  Main  ] - Creating second thread..");
54         ThreadStart Thread_3 = new ThreadStart(ThreadMethod_blocker);
55
56         Thread A = new Thread(Thread_1);
57         Thread B = new Thread(Thread_2);
58         Thread C = new Thread(Thread_3);
59         
60         A.Start();
61         B.Start();
62         C.Start();
63         
64         Thread.Sleep(500);
65         Console.WriteLine("[  Main  ] - Finish...");
66     }
67 }