Exemple #1
0
        public void ChangeScale(int newScaleSize)
        {
            if (newScaleSize <= 0)
            {
                throw new ArgumentOutOfRangeException("newScaleSize", "Must be Greater than Zero");
            }

            ScaleSize = newScaleSize;

            if (!running)
            {
                return;
            }

            lock (lockWorkers)
            {
                // Scale down
                while (workers.Count > ScaleSize)
                {
                    workers[0].Cancel();
                    workers.RemoveAt(0);
                }

                // Scale up
                while (workers.Count < ScaleSize)
                {
                    var worker = new ServiceWorkerAdapter <TNotification>(this, ServiceConnectionFactory.Create());
                    workers.Add(worker);
                    worker.Start();
                }

                LogAgent.Debug("Scaled Changed to: " + workers.Count);
            }
        }