コード例 #1
0
        public static WriteResult Commit(this EventStoreTransaction tx)
        {
            var task = tx.CommitAsync();

            task.Wait();
            return(task.Result);
        }
コード例 #2
0
        private Task<object> CommitTransaction(EventStoreTransaction transaction)
        {
            var resSource = new TaskCompletionSource<object>();

            Action<Task> fail = prevTask =>
            {
                Log.Info("WriteEventsInTransactionalWay for tran {0} failed", transaction.TransactionId);
                resSource.SetException(prevTask.Exception);
            };

            var commitTask = transaction.CommitAsync();
            commitTask.ContinueWith(fail, TaskContinuationOptions.OnlyOnFaulted);
            commitTask.ContinueWith(t =>
            {
                Log.Info("Committed tran {0}", transaction.TransactionId);
                resSource.SetResult(null);
            }, TaskContinuationOptions.OnlyOnRanToCompletion);

            return resSource.Task;
        }