コード例 #1
0
        public void SingleTest()
        {
            var autoresetEvent = new AutoResetEvent(false);

            new Thread(() => autoresetEvent.Set()).Start();

            MultiWaitHandler.WaitAll(new WaitHandle[] { autoresetEvent }, TimeSpan.FromMilliseconds(100));
        }
コード例 #2
0
        public void ManyMultiTest()
        {
            bool wasOk  = false;
            var  thread = new Thread(() =>
            {
                var autoresetEvents =
                    Enumerable.Range(0, 3000).Select(are => (WaitHandle) new AutoResetEvent(false)).ToList();

                new Thread(() => autoresetEvents.ForEach(are => ((AutoResetEvent)are).Set())).Start();

                var stopWatch = Stopwatch.StartNew();
                MultiWaitHandler.WaitAll(autoresetEvents.ToArray(), TimeSpan.FromMilliseconds(100));
                wasOk = stopWatch.ElapsedMilliseconds < 200;
            });

            thread.Start();
            thread.Join();

            Assert.IsTrue(wasOk);
        }