public void CreateAndUseAgentQueue()
        {
            AgentQueue <Counter> queue = new AgentQueue <Counter>(1);

            Thread thread = new Thread(new ThreadStart(delegate() { queue.Enqueue(c => { c.Increment(); }); }));

            thread.Start();

            Action <Counter> action = queue.Dequeue();

            Assert.IsNotNull(action);

            Counter counter = new Counter();

            action(counter);
            Assert.AreEqual(1, counter.Count);
        }
        public void CreateAndUseAgentQueueTenTimes()
        {
            AgentQueue <Counter> queue = new AgentQueue <Counter>(5);

            Thread thread = new Thread(new ThreadStart(delegate() { for (int k = 1; k <= 10; k++)
                                                                    {
                                                                        queue.Enqueue(c => { c.Increment(); });
                                                                    }
                                                       }));

            thread.Start();

            Counter counter = new Counter();

            for (int j = 1; j <= 10; j++)
            {
                Action <Counter> action = queue.Dequeue();
                Assert.IsNotNull(action);
                action(counter);
                Assert.AreEqual(j, counter.Count);
            }
        }