2 using System
.Threading
.Tasks
;
3 using System
.Threading
;
4 using System
.Collections
.Generic
;
9 static async Task
<string> TestCompositionCall_1 ()
11 return await Task
.Factory
.StartNew (() => { Thread.Sleep (10); return "a"; }
).ConfigureAwait (false) +
12 await Task
.Factory
.StartNew (() => "b").ConfigureAwait (false) + "c";
15 static async Task
<string> TestCompositionCall_2 ()
17 return "a" + 1.ToString () +
18 await Task
.Factory
.StartNew (() => "b").ConfigureAwait (false) + "c";
21 static async Task
<int> TestCompositionCall_3 ()
23 return await M (await Task
.Factory
.StartNew (() => (byte) 4).ConfigureAwait (false)).ConfigureAwait (false);
26 static async Task
<int> TestCompositionPair_1 ()
28 return await Task
.Factory
.StartNew (() => 3).ConfigureAwait (false) + 6;
31 static async Task
<int> TestCompositionPair_2 ()
33 return await Task
.Factory
.StartNew (() => { Thread.Sleep (10); return 3; }
).ConfigureAwait (false) -
34 await Task
.Factory
.StartNew (() => 4).ConfigureAwait (false);
37 static async Task
<int> TestCompositionPair_3 ()
40 await Task
.Factory
.StartNew (() => 4).ConfigureAwait (false);
43 static async Task
<int> TestCompositionPair_4 ()
45 return await Task
.Factory
.StartNew (() => 3).ConfigureAwait (false) +
46 await Task
.Factory
.StartNew (() => 4).ConfigureAwait (false) +
47 await Task
.Factory
.StartNew (() => 7).ConfigureAwait (false);
50 static Task
<byte> M (byte value)
52 return Task
.Factory
.StartNew (() => value);
55 public static int Main ()
57 var t1
= TestCompositionCall_1 ();
58 if (!Task
.WaitAll (new[] { t1 }
, 1000))
61 if (t1
.Result
!= "abc")
64 var t2
= TestCompositionCall_2 ();
65 if (!Task
.WaitAll (new[] { t2 }
, 1000))
68 if (t2
.Result
!= "a1bc")
71 var t3
= TestCompositionCall_3 ();
72 if (!Task
.WaitAll (new[] { t3 }
, 1000))
78 var t5
= TestCompositionPair_1 ();
79 if (!Task
.WaitAll (new[] { t5 }
, 1000))
85 var t6
= TestCompositionPair_2 ();
86 if (!Task
.WaitAll (new[] { t6 }
, 1000))
92 var t7
= TestCompositionPair_3 ();
93 if (!Task
.WaitAll (new[] { t7 }
, 1000))
99 var t8
= TestCompositionPair_4 ();
100 if (!Task
.WaitAll (new[] { t8 }
, 1000))
106 Console
.WriteLine ("ok");