Пример #1
0
            public void MoveNext()
            {
                switch (_state)
                {
                case 1:
                {
                    buffer = new byte[BUFFER_SIZE * 128];
                    Random ran = new Random();
                    ran.NextBytes(buffer);
                    fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None, BUFFER_SIZE, FileOptions.Asynchronous);
                    //await fs.WriteAsync(buffer, 0, buffer.Length);
                    _awaiter = fs.WriteAsync(buffer, 0, buffer.Length).GetAwaiter();
                    if (_awaiter.IsCompleted)
                    {
                        goto case 2;
                    }
                    else
                    {
                        _state = 2;
                        _self  = this;
                        _builder.AwaitUnsafeOnCompleted(ref _awaiter, ref _self);
                    }
                }
                break;

                case 2:
                {
                    Console.WriteLine("Write finished!");
                    fs?.Dispose();
                    _builder.SetResult();
                }
                break;
                }
            }
Пример #2
0
 public Task Start()
 {
     _self = this;
     _builder.Start(ref _self);
     return(_builder.Task);
 }
Пример #3
0
        public static Task Case1()
        {
            AsyncMethodStateMachine stateMachine = new AsyncMethodStateMachine();

            return(stateMachine.Start());
        }