public Phase2LoadTestForm()
 {
     InitializeComponent();
     this.loadVo         = new LoadTestInputVO();
     this.uiThreads      = new List <Thread>();
     this.timedEvents    = new List <TimeSpan>();
     this.loadController = null;
     this.numberUsersComboBox.SelectedIndex     = 0;
     this.progressionRateComboBox.SelectedIndex = 0;
     this.delayUserTextBox.Text             = "100";
     this.executeFlowComboBox.SelectedIndex = 0;
     this.numIterations = 1;
     //this.curIteration = 0;
     this.inputsValid = false;
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void startButton_Click(object sender, EventArgs e)
        {
            this.setStartButtonEnabled(false);
            this.setPauseButtonEnabled(false);
            this.setStopButtonEnabled(true);

            //Determine progression rate
            var progRate = (string)this.progressionRateComboBox.SelectedItem;
            var pRate    = CashlinxLoadThreadController.ProgressionRate.RANDOM;

            if (progRate.Equals("Arithmetic", StringComparison.OrdinalIgnoreCase))
            {
                pRate = CashlinxLoadThreadController.ProgressionRate.ARITHMETIC;
            }
            else if (progRate.Equals("Geometric", StringComparison.OrdinalIgnoreCase))
            {
                pRate = CashlinxLoadThreadController.ProgressionRate.GEOMETRIC;
            }
            var  eFlow      = CashlinxLoadThreadController.ExecuteFlow.NEWLOAN_EXIST_CUSTOMER;
            uint delayUsers = 0;

            if (!UInt32.TryParse(this.delayUserTextBox.Text, out delayUsers))
            {
                //Use default
                delayUsers = DEFAULT_DELAY;
            }
            uint numThreads;

            if (!UInt32.TryParse((string)this.numberUsersComboBox.SelectedItem, out numThreads))
            {
                //Use default
                numThreads = DEFAULT_THREADS;
            }
            uint numIters;

            if (!UInt32.TryParse((string)this.numberIterationsTextBox.Text, out numIters))
            {
                numIters = 1;
            }

            DateTime dateNow       = DateTime.Now;
            string   fileDateMonth = ("" + dateNow.Date.Month).PadLeft(2, '0');
            string   fileDateDay   = ("" + dateNow.Date.Day).PadLeft(2, '0');
            string   fileDateYear  = "" + dateNow.Date.Year;
            string   fileDateHour  = ("" + dateNow.TimeOfDay.Hours).PadLeft(2, '0');
            string   fileDateMin   = ("" + dateNow.TimeOfDay.Minutes).PadLeft(2, '0');
            string   fileDateSec   = ("" + dateNow.TimeOfDay.Seconds).PadLeft(2, '0');
            string   fileName      = "LoadTestOutput_" + fileDateMonth + fileDateDay + fileDateYear + "_" +
                                     fileDateHour + fileDateMin + fileDateSec + ".csv";
            StreamWriter fileOutput = new StreamWriter(@"c:\tmp\logs\" + fileName);

            try
            {
                fileOutput.AutoFlush = true;
            }
            catch (Exception)
            {
            }

            //Create thread load controller
            this.loadController =
                new CashlinxLoadThreadController(pRate, delayUsers, numThreads,
                                                 1.0d, numIters, this.loadVo,
                                                 ThreadPriority.Normal, eFlow,
                                                 this.addMessage, fileOutput);

            this.startTestTime = DateTime.Now;
            //this.startTimer();

            //Start UI threads if enabled
            //NOTE: Disabling UI threads -----------------------------------------

            /*if (this.uiThreadsCheckBox.Checked == true)
             * {
             *  if (!this.CreateUIThreads(MAX_UI_THREADS))
             *  {
             *      this.setStartButtonEnabled(true);
             *      MessageBox.Show("Could not create UI threads", "Load Test Error", MessageBoxButtons.OK,
             *                      MessageBoxIcon.Error);
             *      return;
             *  }
             *  if (!this.StartUIThreads())
             *  {
             *      this.setStartButtonEnabled(true);
             *      MessageBox.Show("Could not start UI threads", "Load Test Error", MessageBoxButtons.OK,
             *                      MessageBoxIcon.Error);
             *      return;
             *  }
             *  Thread.Sleep(100);
             * }*/

            //Perform startup of other threads
            this.addMessage("Starting load test with " + numThreads + " thread(s)");
            this.loadController.startThreads();
            Thread.Sleep(1000);
            this.statusChecker.RunWorkerAsync();
            this.statusChecker.RunWorkerCompleted += statusChecker_RunWorkerCompleted;
        }