private fsCalculatorUpdateHandler(
     fsCalculatorUpdateHandler parentHandler,
     double startValue,
     double endValue)
 {
     m_parentHandler = parentHandler;
     m_startValue    = startValue;
     m_endValue      = endValue;
 }
示例#2
0
        private void CalculateInThread()
        {
            var uh = new fsCalculatorUpdateHandler(fsLabeledProgressBar1);

            errorMessageTextBox.Text = "";

            var calcsList = new List <KeyValuePair <fsCalculator, Dictionary <fsParameterIdentifier, fsCalculatorParameter> > >();

            foreach (var dataContainer in dataContainers)
            {
                foreach (var calculator in dataContainer.m_calculatorList)
                {
                    calcsList.Add(new KeyValuePair <fsCalculator, Dictionary <fsParameterIdentifier, fsCalculatorParameter> >(
                                      calculator,
                                      dataContainer.m_parameterValue));
                }
            }

            var progressSplitters = new double[calcsList.Count + 1];
            int totalAmount       = calcsList.Sum(t => t.Key.GetToCalculateAmount());
            int currentAmount     = 0;

            for (int i = 0; i < calcsList.Count; ++i)
            {
                progressSplitters[i] = (double)currentAmount / totalAmount;
                currentAmount       += calcsList[i].Key.GetToCalculateAmount();
            }
            progressSplitters[calcsList.Count] = 1;

            for (int i = 0; i < calcsList.Count; ++i)
            {
                var calc = calcsList[i].Key;
                calc.SetUpdateHandler(uh.CreateSubHandler(
                                          progressSplitters[i],
                                          progressSplitters[i + 1]));
                ApplyCalculator(calc, calcsList[i].Value);
            }

            foreach (var dataContainer in dataContainers)
            {
                foreach (var p in dataContainer.m_parameterValue.Keys)
                {
                    var value = dataContainer.m_parameterValue[p];
                    if (value.IsInput == false)
                    {
                        dataContainer.m_parameterCell[p].Value = value.ValueToStringWithCurrentUnits();
                    }
                }
            }
        }
示例#3
0
 public void SetUpdateHandler(fsCalculatorUpdateHandler updateHandler)
 {
     m_updateHandler = updateHandler;
 }