public void AfterCompletion(bool success) { try { if (success) { queueingProcessor.PerformWorks(queue); } else { queueingProcessor.CancelWorks(queue); } } finally { isConsumed = true; //clean the Synchronization per Transaction //not needed in a strict sensus but a cleaner approach and faster than the GC if (queuePerTransaction != null) { queuePerTransaction.Remove(this); } } }