In Test/System.Data:
[mono-project.git] / mono / tests / autoresetevents.cs
blob28a4650cf2554c3c284aec8bf72cee93495c5da4
1 using System;
2 using System.Threading;
4 class EventTest
5 {
6 public static AutoResetEvent e;
8 // Code for first thread
9 public static void ThreadMethod_waiter_1()
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();
19 // Code for second thread
20 public static void ThreadMethod_waiter_2()
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();
30 // Code for 3th thread
31 public static void ThreadMethod_blocker()
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.....");
42 public static void Main()
44 e = new AutoResetEvent(false);
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);
52 // Create the blocker thread
53 Console.WriteLine("[ Main ] - Creating second thread..");
54 ThreadStart Thread_3 = new ThreadStart(ThreadMethod_blocker);
56 Thread A = new Thread(Thread_1);
57 Thread B = new Thread(Thread_2);
58 Thread C = new Thread(Thread_3);
60 A.Start();
61 B.Start();
62 C.Start();
64 Thread.Sleep(500);
65 Console.WriteLine("[ Main ] - Finish...");