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); } } } }
/// <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 } }