private static void ThreadFunc(object state) { int index = (int)state; ThreadContext.Set((index + ThreadCount).ToString(), index); Atomic.Inc(ref lock_); while (Atomic.Cas(ref lock_, ThreadCount, ThreadCount) != ThreadCount) { Soyo.Base.Thread.Sleep(1); } bool result = ThreadContext.Contains("1"); Assert.IsFalse(result, "value should be false");; result = ThreadContext.Contains("2"); Assert.IsFalse(result, "value should be false");; for (int i = 0; i < ThreadCount; i++) { object value = ThreadContext.Get((i + ThreadCount).ToString()); if (i == index) { Assert.AreEqual(value, index, "value should be index"); } else { Assert.IsNull(value, "value should be null");; } Atomic.Inc(ref checkCount_); } }