System.Transactions.EnlistableStates.CompleteBlockingClone C# (CSharp) Method

CompleteBlockingClone() private method

private CompleteBlockingClone ( InternalTransaction tx ) : void
tx InternalTransaction
return void
        internal override void CompleteBlockingClone(InternalTransaction tx)
        {
            // A blocking clone simulates a phase 0 volatile

            // decrement the number of dependentClones
            tx._phase0Volatiles._dependentClones--;
            Debug.Assert(tx._phase0Volatiles._dependentClones >= 0);

            // Make certain we increment the right list.
            Debug.Assert(tx._phase0Volatiles._preparedVolatileEnlistments <=
                tx._phase0Volatiles._volatileEnlistmentCount + tx._phase0Volatiles._dependentClones);

            // Check to see if all of the volatile enlistments are done.
            if (tx._phase0Volatiles._preparedVolatileEnlistments ==
                tx._phase0VolatileWaveCount + tx._phase0Volatiles._dependentClones)
            {
                tx.State.Phase0VolatilePrepareDone(tx);
            }
        }