예제 #1
0
        public void CallParallelThreadSafeAsyncTest()
        {
            int?      sum    = 0;
            Stopwatch sw     = Stopwatch.StartNew();
            var       result = ActionTools.CallParallelThreadSafeAsync(100,
                                                                       () => { sum += 2; Task.Delay(10).Wait(); },
                                                                       () => { sum -= 1; Task.Delay(10).Wait(); }
                                                                       );

            Assert.IsTrue(sw.ElapsedMilliseconds < TestTimingTolerance);

            result.Wait();
            var elapsed = sw.ElapsedMilliseconds;

            Assert.IsTrue(Math.Abs(result.Result - elapsed) < TestTimingTolerance);
            Assert.AreEqual(100, sum);
        }