public Task CommitAsync(CancellationToken cancellationToken)
        {
            _committed = true;
            Task baseTask = CancellableTaskFactory.FromAsync(base.BeginCommit, base.EndCommit, cancellationToken);

            return(CommitAsyncCore(baseTask, cancellationToken));
        }
        public override ICancellableAsyncResult BeginFlush(AsyncCallback callback, object state)
        {
            CancellationTokenSource cancellationSource = new CancellationTokenSource();
            Task baseTask = CancellableTaskFactory.FromAsync(base.BeginFlush, base.EndFlush, cancellationSource.Token);

            return(new TaskCancellableAsyncResult(FlushAsyncCore(baseTask), cancellationSource, callback, state));
        }
        public override ICancellableAsyncResult BeginCommit(AsyncCallback callback, object state)
        {
            CancellationTokenSource cancellationSource = new CancellationTokenSource();

            _committed = true;
            Task baseTask = CancellableTaskFactory.FromAsync(base.BeginCommit, base.EndCommit,
                                                             cancellationSource.Token);

            return(new TaskCancellableAsyncResult(CommitAsyncCore(baseTask, cancellationSource.Token),
                                                  cancellationSource, callback, state));
        }
 public override Task FlushAsync(CancellationToken cancellationToken)
 {
     // The Storage NuGet package for .NET 4.0 can't implement FlushAsync, since that is a .NET 4.5-only method.
     // Rely on BeginFlush/EndFlush instead of FlushAsync.
     return(CancellableTaskFactory.FromAsync(_inner.BeginFlush, _inner.EndFlush, cancellationToken));
 }