cf1b181359111ffbc14a818e673130866fa39d1d
[mono.git] / mcs / tests / test-iter-23.cs
1 using System;
2 using System.Collections;
3 using System.Threading;
4
5 class X
6 {
7         static ManualResetEvent dispose = new ManualResetEvent (false);
8
9         static IEnumerable GetIt2 ()
10         {
11                 yield return Delay ();
12                 yield return 2;
13         }
14
15         static int Delay ()
16         {
17                 dispose.Set ();
18                 Thread.Sleep (10);
19                 return 1;
20         }
21
22         public static int Main ()
23         {
24                 var e = GetIt2 ().GetEnumerator ();
25                 ThreadPool.QueueUserWorkItem (l => {
26                         dispose.WaitOne ();
27                         ((IDisposable) e).Dispose ();
28                 });
29
30                 if (!e.MoveNext ())
31                         return 1;
32
33                 if (e.MoveNext ())
34                         return 2;
35
36                 Console.WriteLine (e.Current);
37                 if ((int) e.Current != 1)
38                         return 3;
39
40                 return 0;
41         }
42 }