1 // Compiler options: -langversion:future
4 using System.Threading;
5 using System.Threading.Tasks;
7 namespace ConsoleApplication1
11 public static Task<TResult> Run<TResult> (Func<Task<TResult>> function)
13 var t = Task<Task<TResult>>.Factory.StartNew (function);
14 return GetTaskResult (t);
17 async static Task<TResult> GetTaskResult<TResult> (Task<Task<TResult>> task)
19 return await task.Result;
22 public static int Main ()
24 var t2 = Run (() => Task<int>.Factory.StartNew (() => 5));
26 if (!t2.Wait (1000)) {
27 Console.WriteLine (t2.Status);
31 Console.WriteLine ("ok");