예제 #1
0
파일: MainForm.cs 프로젝트: ming91915/SDSS
        private void buttonSolve_Click(object sender, EventArgs e)
        {
            StringBuilder errorMessage = new StringBuilder();

            // 对模型进行检查,看是否可以进行计算
            if (Model.Validate(ref errorMessage))
            {
                _Solver = new AnsysSolver(
                    workingDir: WorkingDir,
                    solverGui: Options.SolverGUI
                    );

                // 检查计算环境,文件配置
                if (_Solver.SetEnvironment(Model, ref errorMessage))
                {
                    // 求解计算
                    _bcParameters = new BgwParameters()
                    {
                        Solver       = _Solver,
                        ErrorMessage = errorMessage.ToString(),
                    };
                    //
                    progressBar1.Visible = true;
                    progressBar1.Style   = ProgressBarStyle.Marquee;

                    if (_bgw_Solver.IsBusy != true)
                    {
                        //
                        OnSdCalculationStart();
                        // Start the asynchronous operation.
                        _bgw_Solver.RunWorkerAsync(argument: _bcParameters);
                    }
                }
            }
        }
예제 #2
0
파일: MainForm.cs 프로젝트: ming91915/SDSS
 /// <summary> 开始计算 </summary>
 private void _bgw_Solver_DoWork(object sender, DoWorkEventArgs e)
 {
     try
     {
         BgwParameters para = e.Argument as BgwParameters;
         //
         _Solver.CalculationTimerElapsed += SolverOnCalculationTimerElapsed;
         //
         SolverState state = para.Solver.Execute(
             waitingSeconds: Options.WaitingSeconds,
             errorMessage: out para.ErrorMessage
             );
     }
     catch (Exception ex)
     {
         e.Cancel = true;
         e.Result = ex;
         // ignored
     }
 }