c9681dffed266dd47043952cc88277f433298ecb
[mono.git] / mono / tests / thread-suspend-selfsuspended.cs
1
2 using System;
3 using System.Threading;
4
5 class Driver
6 {
7         public static void Main ()
8         {
9                 bool finished = false;
10
11                 Thread t1 = Thread.CurrentThread;
12
13                 Thread t2 = new Thread (() => {
14                         while (!finished) {
15                                 GC.Collect ();
16
17                                 try {
18                                         t1.Resume ();
19                                 } catch (ThreadStateException) {
20                                 }
21
22                                 Thread.Yield ();
23                         }
24                 });
25
26                 t2.Start ();
27
28                 Thread.Sleep (10);
29
30                 for (int i = 0; i < 50 * 40 * 20; ++i) {
31                         Thread.CurrentThread.Suspend ();
32                         if ((i + 1) % (50) == 0)
33                                 Console.Write (".");
34                         if ((i + 1) % (50 * 40) == 0)
35                                 Console.WriteLine ();
36                 }
37
38                 finished = true;
39
40                 t2.Join ();
41         }
42 }