Esempio n. 1
0
        /// <summary>
        /// Updates the aggregate using a timer with short interval, calling
        /// AggregateUpdateOnTimeEvent periodically.
        /// </summary>
        /// <param name="_particle_slider_val">Number of particles to generate in aggregate.</param>
        private void AggregateUpdateListener(uint _particle_slider_val)
        {
            // interval of timer for refreshing aggregate in ms
            const double interval = 10.0;

            // initialise a Timer with a 10ms interval
            System.Timers.Timer timer = new System.Timers.Timer(interval);
            // repeatedly call AggregateUpdateOnTimedEvent every 'interval' ms
            switch (lattice_dimension)
            {
            case LatticeDimension._2D:
                if (dla_2d.Size() < _particle_slider_val)
                {
                    timer.Elapsed  += Aggregate2DUpdateOnTimedEvent;
                    timer.AutoReset = true;
                    timer.Enabled   = true;
                }
                // stop timer and dispose all attached resources
                else
                {
                    timer.Stop();
                    timer.Dispose();
                }
                break;

            case LatticeDimension._3D:
                if (dla_3d.Size() < _particle_slider_val)
                {
                    timer.Elapsed  += Aggregate3DUpdateOnTimedEvent;
                    timer.AutoReset = true;
                    timer.Enabled   = true;
                }
                // stop timer and dispose all attached resources
                else
                {
                    timer.Stop();
                    timer.Dispose();
                }
                break;
            }
        }