Example #1
0
        public async Task CanRunItemsInParallel()
        {
            var rnd = new Random();

            var tranformer = new CSharp.ParallelInOrderTransformer <int, int>(async v =>
            {
                await Task.Delay(rnd.Next(10));
                return(v);
            }, 50, 5);

            var list = new List <int>();

            foreach (var i in Enumerable.Range(1, 100))
            {
                tranformer.Process(i, async result =>
                {
                    await Task.Delay(rnd.Next(10));
                    lock (list)
                    {
                        list.Add(result);
                    }
                });
            }

            while (list.Count < 100)
            {
                await Task.Delay(100);
            }

            Assert.Equal(100, list.Count);
            foreach (var item in list.Zip(Enumerable.Range(1, 100), (a, b) => a == b))
            {
                Assert.True(item);
            }
        }
        public async Task CanRunItemsInParallel()
        {
            var rnd = new Random();

            using (var tranformer = new CSharp.ParallelInOrderTransformer <int, int>(v =>
            {
                Thread.Sleep(rnd.Next(10));
                return(v);
            }, 50, 5))
            {
                var list = new List <int>();

                const int itemCount = 10;
                foreach (var i in Enumerable.Range(1, itemCount))
                {
                    tranformer.Process(i, result =>
                    {
                        Thread.Sleep(rnd.Next(10));
                        lock (list)
                        {
                            list.Add(result);
                        }
                    });
                }

                while (list.Count < itemCount)
                {
                    await Task.Delay(100);
                }

                Assert.Equal(itemCount, list.Count);
                var zippedList = list.Zip(Enumerable.Range(1, itemCount), (a, b) => a == b);
                foreach (var item in zippedList)
                {
                    Assert.True(item);
                }
            }
        }
        public async Task CanRunItemsInParallel()
        {
            var rnd = new Random();

            using (var tranformer = new CSharp.ParallelInOrderTransformer<int, int>(v =>
            {
                Thread.Sleep(rnd.Next(10));
                return v;
            }, 50, 5))
            {
                var list = new List<int>();

                const int itemCount = 10;
                foreach (var i in Enumerable.Range(1, itemCount))
                {
                    tranformer.Process(i, result =>
                        {
                            Thread.Sleep(rnd.Next(10));
                            lock (list)
                            {
                                list.Add(result);
                            }
                        });
                }

                while (list.Count < itemCount)
                {
                    await Task.Delay(100);
                }

                Assert.Equal(itemCount, list.Count);
                var zippedList = list.Zip(Enumerable.Range(1, itemCount), (a, b) => a == b);
                foreach (var item in zippedList)
                {
                    Assert.True(item);
                }
            }
        }