Merge pull request #5714 from alexischr/update_bockbuild
[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         static ManualResetEvent wait = new ManualResetEvent (false);
9
10         static IEnumerable GetIt2 ()
11         {
12                 yield return Delay ();
13                 yield return 2;
14         }
15
16         static int Delay ()
17         {
18                 dispose.Set ();
19                 wait.WaitOne ();
20                 return 1;
21         }
22
23         public static int Main ()
24         {
25                 var e = GetIt2 ().GetEnumerator ();
26                 ThreadPool.QueueUserWorkItem (l => {
27                         dispose.WaitOne ();
28                         ((IDisposable) e).Dispose ();
29                         wait.Set ();
30                 });
31
32                 if (!e.MoveNext ())
33                         return 1;
34
35                 if (e.MoveNext ())
36                         return 2;
37
38                 Console.WriteLine (e.Current);
39                 if ((int) e.Current != 1)
40                         return 3;
41
42                 return 0;
43         }
44 }