Ejemplo n.º 1
0
        public async Task QueueFunction()
        {
            // Assign

            var queue = new SerialQueue();
            var list  = new List <int>();
            var tasks = new List <Task <int> >();
            var range = Enumerable.Range(0, 10000);

            // Act

            foreach (var number in range)
            {
                tasks.Add(queue.EnqueueFunction(() => {
                    list.Add(number);
                    return(number);
                }));
            }

            await Task.WhenAll(tasks);

            // Assert

            Assert.True(tasks.Select(x => x.Result).SequenceEqual(list));
        }
Ejemplo n.º 2
0
        public async Task QueueAsyncFunctionAsNormalFunction()
        {
            // Assign

            var  queue   = new SerialQueue();
            bool success = false;

            // Act

            try
            {
                await queue.EnqueueFunction(async() =>
                {
                    await Task.Delay(50);
                });

                success = true;
            }
            catch (Exception)
            {
            }

            Assert.False(success);
        }