summaryrefslogtreecommitdiff
path: root/mcs/tests/test-iter-23.cs
blob: cf1b181359111ffbc14a818e673130866fa39d1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using System.Collections;
using System.Threading;

class X
{
	static ManualResetEvent dispose = new ManualResetEvent (false);

	static IEnumerable GetIt2 ()
	{
		yield return Delay ();
		yield return 2;
	}

	static int Delay ()
	{
		dispose.Set ();
		Thread.Sleep (10);
		return 1;
	}

	public static int Main ()
	{
		var e = GetIt2 ().GetEnumerator ();
		ThreadPool.QueueUserWorkItem (l => {
			dispose.WaitOne ();
			((IDisposable) e).Dispose ();
		});

		if (!e.MoveNext ())
			return 1;

		if (e.MoveNext ())
			return 2;

		Console.WriteLine (e.Current);
		if ((int) e.Current != 1)
			return 3;

		return 0;
	}
}