protected void HandleEnded(WorkUnit sender, WorkEventArgs e) { sender.Ended -= HandleEnded; if (_workUnits.Any(w => w != sender && !w.HasEnded)) { return; } EndTransaction(_workUnits.All(w => w.IsComplete)); }
public WorkUnit Begin() { if (_transaction == null || !_transaction.IsActive) { _transaction = _session.BeginTransaction(); } var work = new WorkUnit(); work.Ended += HandleEnded; _workUnits.Add(work); return(work); }