private void HandleEnded(WorkUnit sender, WorkEventArgs e) { sender.Ended -= HandleEnded; if (_workUnits.Any(w => !w.Equals(sender) && !w.HasEnded)) { return; } EndTransaction(_workUnits.All(w => w.IsComplete)); }