Merge pull request #273 from joncham/bug-getpid
[mono.git] / mcs / tests / test-async-04.cs
1 // Compiler options: -langversion:future
2
3 using System;
4 using System.Threading.Tasks;
5 using System.Threading;
6
7 class C
8 {
9         ManualResetEvent mre = new ManualResetEvent (false);
10         ManualResetEvent mre_task = new ManualResetEvent (false);
11
12         public async Task<int> TestTaskGeneric ()
13         {
14                 await Task.Factory.StartNew (() => {
15                         mre_task.Set ();
16                         mre.WaitOne (3000);
17                         return 5;
18                 }).ConfigureAwait (false);;
19
20                 return 1;
21         }
22
23         public static int Main ()
24         {
25                 var c = new C ();
26                 
27                 var t2 = c.TestTaskGeneric ();
28                 if (t2.Status != TaskStatus.WaitingForActivation)
29                         return 1;
30                 
31                 c.mre_task.WaitOne (3000);
32                 c.mre.Set ();
33                 
34                 if (!Task.WaitAll (new[] { t2 }, 3000))
35                         return 2;
36
37                 if (t2.Result != 1)
38                         return 3;
39
40                 if (t2.Status != TaskStatus.RanToCompletion)
41                         return 4;
42
43                 return 0;
44         }
45 }