示例#1
0
        private static Task <int> CountRecursivelyAsync(int count)
        {
            CountRecursivelyAsyncd__1 stateMachine = new CountRecursivelyAsyncd__1();

            stateMachine.count      = count;
            stateMachine.t__builder = CSharpAsync.AsyncTaskMethodBuilder <int> .Create();

            stateMachine.state = -1;
            //stateMachine.t__builder.Start(ref stateMachine);
            //return stateMachine.t__builder.Task;Í


            AsyncTaskMethodBuilder <int> t__builder = stateMachine.t__builder;

            t__builder.Start(ref stateMachine);
            return(stateMachine.t__builder.Task);
        }
示例#2
0
            private void MoveNextSimple()
            {
                int num = state;
                int result;

                try
                {
                    TaskAwaiter <int> awaiter;
                    if (num == 0)
                    {
                        awaiter = u__2;
                        u__2    = default(TaskAwaiter <int>);
                        num     = (state = -1);
                        goto IL_0088;
                    }
                    if (count > 0)
                    {
                        awaiter = CountRecursivelyAsync(count - 1).GetAwaiter();
                        if (!awaiter.IsCompleted)
                        {
                            num  = (state = 0);
                            u__2 = awaiter;
                            CountRecursivelyAsyncd__1 stateMachine = this;
                            t__builder.AwaitUnsafeOnCompleted(ref awaiter, ref stateMachine);
                            return;
                        }
                        goto IL_0088;
                    }
                    result = count;
                    goto end_IL_0007;
IL_0088:
                    s__1   = awaiter.GetResult();
                    result = 1 + s__1;
                    end_IL_0007 :;
                }
                catch (Exception exception)
                {
                    state = -2;
                    t__builder.SetException(exception);
                    return;
                }
                state = -2;
                t__builder.SetResult(result);
            }