Advertisement
Suchiman

Untitled

Jul 31st, 2014
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.87 KB | None | 0 0
  1. class Program
  2. {
  3.     static void Main(string[] args)
  4.     {
  5.         KA().Wait();
  6.     }
  7.  
  8.     static async Task KA()
  9.     {
  10.         await WriteToPipe();
  11.         Console.WriteLine("YES!");
  12.     }
  13.  
  14.     private static async Task WriteToPipe()
  15.     {
  16.         StreamReader reader = new StreamReader(new MemoryStream());
  17.         string line = await reader.ReadLineAsync();
  18.         Console.WriteLine("Readed!");
  19.     }
  20. }
  21.  
  22. turns into...:
  23.   internal class Program
  24.   {
  25.     public Program()
  26.     {
  27.       base.\u002Ector();
  28.     }
  29.  
  30.     private static void Main(string[] args)
  31.     {
  32.       Program.KA().Wait();
  33.     }
  34.  
  35.     private static Task KA()
  36.     {
  37.       Program.\u003CKA\u003Ed__1 stateMachine;
  38.       stateMachine.\u003C\u003Et__builder = AsyncTaskMethodBuilder.Create();
  39.       stateMachine.\u003C\u003E1__state = -1;
  40.       stateMachine.\u003C\u003Et__builder.Start<Program.\u003CKA\u003Ed__1>(ref stateMachine);
  41.       return stateMachine.\u003C\u003Et__builder.Task;
  42.     }
  43.  
  44.     private static Task WriteToPipe()
  45.     {
  46.       Program.\u003CWriteToPipe\u003Ed__1 stateMachine;
  47.       stateMachine.\u003C\u003Et__builder = AsyncTaskMethodBuilder.Create();
  48.       stateMachine.\u003C\u003E1__state = -1;
  49.       stateMachine.\u003C\u003Et__builder.Start<Program.\u003CWriteToPipe\u003Ed__1>(ref stateMachine);
  50.       return stateMachine.\u003C\u003Et__builder.Task;
  51.     }
  52.  
  53.     [CompilerGenerated]
  54.     [StructLayout(LayoutKind.Auto)]
  55.     private struct \u003CKA\u003Ed__1 : IAsyncStateMachine
  56.     {
  57.       public int \u003C\u003E1__state;
  58.       public AsyncTaskMethodBuilder \u003C\u003Et__builder;
  59.       private TaskAwaiter \u003C\u003Eu__\u0024awaiter0;
  60.  
  61.       void IAsyncStateMachine.MoveNext()
  62.       {
  63.         int num1 = this.\u003C\u003E1__state;
  64.         try
  65.         {
  66.           TaskAwaiter awaiter;
  67.           int num2;
  68.           if (num1 == 0 || num1 != 1)
  69.           {
  70.             awaiter = Program.WriteToPipe().GetAwaiter();
  71.             if (!awaiter.IsCompleted)
  72.             {
  73.               this.\u003C\u003E1__state = num2 = 1;
  74.               this.\u003C\u003Eu__\u0024awaiter0 = awaiter;
  75.               this.\u003C\u003Et__builder.AwaitUnsafeOnCompleted<TaskAwaiter, Program.\u003CKA\u003Ed__1>(ref awaiter, ref this);
  76.               return;
  77.             }
  78.           }
  79.           else
  80.           {
  81.             awaiter = this.\u003C\u003Eu__\u0024awaiter0;
  82.             this.\u003C\u003Eu__\u0024awaiter0 = new TaskAwaiter();
  83.             this.\u003C\u003E1__state = num2 = -1;
  84.           }
  85.           awaiter.GetResult();
  86.           awaiter = new TaskAwaiter();
  87.           Console.WriteLine("YES!");
  88.         }
  89.         catch (Exception ex)
  90.         {
  91.           this.\u003C\u003E1__state = -2;
  92.           this.\u003C\u003Et__builder.SetException(ex);
  93.           return;
  94.         }
  95.         this.\u003C\u003E1__state = -2;
  96.         this.\u003C\u003Et__builder.SetResult();
  97.       }
  98.  
  99.       [DebuggerHidden]
  100.       void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine stateMachine)
  101.       {
  102.         this.\u003C\u003Et__builder.SetStateMachine(stateMachine);
  103.       }
  104.     }
  105.  
  106.     [CompilerGenerated]
  107.     [StructLayout(LayoutKind.Auto)]
  108.     private struct \u003CWriteToPipe\u003Ed__1 : IAsyncStateMachine
  109.     {
  110.       public int \u003C\u003E1__state;
  111.       public AsyncTaskMethodBuilder \u003C\u003Et__builder;
  112.       private TaskAwaiter<string> \u003C\u003Eu__\u0024awaiter1;
  113.  
  114.       void IAsyncStateMachine.MoveNext()
  115.       {
  116.         int num1 = this.\u003C\u003E1__state;
  117.         try
  118.         {
  119.           TaskAwaiter<string> awaiter;
  120.           int num2;
  121.           if (num1 == 0 || num1 != 1)
  122.           {
  123.             awaiter = new StreamReader((Stream) new MemoryStream()).ReadLineAsync().GetAwaiter();
  124.             if (!awaiter.IsCompleted)
  125.             {
  126.               this.\u003C\u003E1__state = num2 = 1;
  127.               this.\u003C\u003Eu__\u0024awaiter1 = awaiter;
  128.               this.\u003C\u003Et__builder.AwaitUnsafeOnCompleted<TaskAwaiter<string>, Program.\u003CWriteToPipe\u003Ed__1>(ref awaiter, ref this);
  129.               return;
  130.             }
  131.           }
  132.           else
  133.           {
  134.             awaiter = this.\u003C\u003Eu__\u0024awaiter1;
  135.             this.\u003C\u003Eu__\u0024awaiter1 = new TaskAwaiter<string>();
  136.             this.\u003C\u003E1__state = num2 = -1;
  137.           }
  138.           awaiter.GetResult();
  139.           awaiter = new TaskAwaiter<string>();
  140.           Console.WriteLine("Readed!");
  141.         }
  142.         catch (Exception ex)
  143.         {
  144.           this.\u003C\u003E1__state = -2;
  145.           this.\u003C\u003Et__builder.SetException(ex);
  146.           return;
  147.         }
  148.         this.\u003C\u003E1__state = -2;
  149.         this.\u003C\u003Et__builder.SetResult();
  150.       }
  151.  
  152.       [DebuggerHidden]
  153.       void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine stateMachine)
  154.       {
  155.         this.\u003C\u003Et__builder.SetStateMachine(stateMachine);
  156.       }
  157.     }
  158.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement