System.Transactions.BucketSet.Add C# (CSharp) Method

Add() private method

private Add ( InternalTransaction newTx ) : void
newTx InternalTransaction
return void
        internal void Add(InternalTransaction newTx)
        {
            while (!headBucket.Add(newTx)) ;
        }

Usage Example

Example #1
0
        private void AddIter(InternalTransaction txNew)
        {
            BucketSet headBucketSet = this.headBucketSet;

            while (headBucketSet.AbsoluteTimeout != txNew.AbsoluteTimeout)
            {
                BucketSet set3 = null;
                do
                {
                    WeakReference nextSetWeak = (WeakReference)headBucketSet.nextSetWeak;
                    BucketSet     target      = null;
                    if (nextSetWeak != null)
                    {
                        target = (BucketSet)nextSetWeak.Target;
                    }
                    if (target == null)
                    {
                        BucketSet     set6       = new BucketSet(this, txNew.AbsoluteTimeout);
                        WeakReference reference5 = new WeakReference(set6);
                        WeakReference reference4 = (WeakReference)Interlocked.CompareExchange(ref headBucketSet.nextSetWeak, reference5, nextSetWeak);
                        if (reference4 == nextSetWeak)
                        {
                            set6.prevSet = headBucketSet;
                        }
                    }
                    else
                    {
                        set3          = headBucketSet;
                        headBucketSet = target;
                    }
                }while (headBucketSet.AbsoluteTimeout > txNew.AbsoluteTimeout);
                if (headBucketSet.AbsoluteTimeout != txNew.AbsoluteTimeout)
                {
                    BucketSet     set2       = new BucketSet(this, txNew.AbsoluteTimeout);
                    WeakReference reference3 = new WeakReference(set2);
                    set2.nextSetWeak = set3.nextSetWeak;
                    WeakReference reference2 = (WeakReference)Interlocked.CompareExchange(ref set3.nextSetWeak, reference3, set2.nextSetWeak);
                    if (reference2 == set2.nextSetWeak)
                    {
                        if (reference2 != null)
                        {
                            BucketSet set5 = (BucketSet)reference2.Target;
                            if (set5 != null)
                            {
                                set5.prevSet = set2;
                            }
                        }
                        set2.prevSet = headBucketSet;
                    }
                    headBucketSet = set3;
                    set3          = null;
                }
            }
            headBucketSet.Add(txNew);
        }
All Usage Examples Of System.Transactions.BucketSet::Add