/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Contexts/Context/SystemTransactionContext.cs
63 строки
1 KB
Chris Patterson
Integration of all external packages into MassTransit, split out into Abstractions, Middleware, and the core MassTransit assembly.
22 янв 2022, 18:24
22 янв 2022, 18:24
b5b4f50
Код
Авторство
О чём код?
namespace MassTransit.Context { using System; using System.Threading.Tasks; using System.Transactions; public class SystemTransactionContext : TransactionContext, IDisposable { readonly CommittableTransaction _transaction; bool _completed; bool _disposed; public SystemTransactionContext(TransactionOptions options) { _transaction = new CommittableTransaction(options); } public void Dispose() { if (_disposed) return; _transaction.Dispose(); _disposed = true; } public Transaction Transaction => _transaction; public async Task Commit() { if (_completed) return; await Task.Factory.FromAsync(_transaction.BeginCommit, _transaction.EndCommit, null).ConfigureAwait(false); _completed = true; } public void Rollback() { if (_completed) return; _transaction.Rollback(); _completed = true; } public void Rollback(Exception exception) { if (_completed) return; _transaction.Rollback(exception); _completed = true; } } }