public Dendrite AddDendrite(DendriteType type)
        {
            Dendrite d = new Dendrite(nextDendriteId++, type);

            dendrites.Add(d);
            return(d);
        }
        private BlockingCollection <Neurotransmitter> buffer; //shared


        public Dendrite(int id, DendriteType type)
        {
            state     = DendriteGrowthState.NoGrowth;
            this.type = type;
            this.Id   = id;
            this.membranePotential = RESTING_POTENTIAL; //Volts
            buffer = new BlockingCollection <Neurotransmitter>(new ConcurrentQueue <Neurotransmitter>());
        }
        }//end Main()

        public static void main_CellGrowthTriggered(object sender, CellGrowthEventArgs e)
        {
            Neuron       n         = e.neuron;
            DendriteType type      = e.type;
            TimeSpan     runLength = e.timespan;
            List <Task>  tasks     = e.tasks;

            Console.WriteLine("Triggered.");



            Dendrite d = n.AddDendrite(type);

            //Consumer to consume neurotransmitters from dendrite buffer
            for (int i = 0; i < 1; i++)
            {
                Task newest = Task.Factory.StartNew((val) =>
                {
                    int id = (int)val;
                    new Task_Dendrite(id, 10).Consume(d, runLength);
                }, i);
                tasks.Add(newest);
            }

            //Producers to send electrical potential to cell body buffer
            for (int i = 0; i < 1; i++)
            {
                Task newest = Task.Factory.StartNew((val) =>
                {
                    int id = (int)val;
                    new Task_Dendrite(id, 10).Produce(d, n.Body, runLength);
                }, i);
                tasks.Add(newest);
            }

            ////Decayers to decay membrane potential of dendrites
            for (int i = 0; i < 1; i++)
            {
                Task newest = Task.Factory.StartNew((val) =>
                {
                    int id = (int)val;
                    new Task_Dendrite(id, 10).Decay(d, runLength);
                }, i);
                tasks.Add(newest);
            }
            //Console.WriteLine("Added.");

            //reset Token so system waits for new tasks too
            //do
            //{
            //try
            //{
            //    cts = new CancellationTokenSource();
            //    Task.WaitAll(tasks.ToArray(), cts.Token);
            //}
            //catch (OperationCanceledException)
            //{
            //    // start over and wait for new tasks
            //}
            //}
            //while (cts.IsCancellationRequested);
        }//end BuildDendrite()