84 {
86 while (bucketSet.AbsoluteTimeout != txNew.AbsoluteTimeout)
87 {
88 BucketSet bucketSet2 = null;
89 do
90 {
91 WeakReference weakReference = (WeakReference)bucketSet.
nextSetWeak;
92 BucketSet bucketSet3 = null;
93 if (weakReference != null)
94 {
95 bucketSet3 = (BucketSet)weakReference.Target;
96 }
97 if (bucketSet3 == null)
98 {
99 BucketSet bucketSet4 = new BucketSet(this, txNew.AbsoluteTimeout);
100 WeakReference
value =
new WeakReference(bucketSet4);
102 if (weakReference2 == weakReference)
103 {
104 bucketSet4.prevSet = bucketSet;
105 }
106 }
107 else
108 {
109 bucketSet2 = bucketSet;
110 bucketSet = bucketSet3;
111 }
112 }
113 while (bucketSet.AbsoluteTimeout > txNew.AbsoluteTimeout);
114 if (bucketSet.AbsoluteTimeout == txNew.AbsoluteTimeout)
115 {
116 continue;
117 }
118 BucketSet bucketSet5 = new BucketSet(this, txNew.AbsoluteTimeout);
119 WeakReference value2 = new WeakReference(bucketSet5);
120 bucketSet5.nextSetWeak = bucketSet2.nextSetWeak;
121 WeakReference weakReference3 = (WeakReference)
Interlocked.
CompareExchange(ref bucketSet2.nextSetWeak, value2, bucketSet5.nextSetWeak);
122 if (weakReference3 == bucketSet5.nextSetWeak)
123 {
124 if (weakReference3 != null)
125 {
126 BucketSet bucketSet6 = (BucketSet)weakReference3.Target;
127 if (bucketSet6 != null)
128 {
129 bucketSet6.prevSet = bucketSet5;
130 }
131 }
132 bucketSet5.prevSet = bucketSet2;
133 }
134 bucketSet = bucketSet2;
135 bucketSet2 = null;
136 }
137 bucketSet.Add(txNew);
138 }
static int CompareExchange(ref int location1, int value, int comparand)
readonly BucketSet _headBucketSet