/// <summary> /// Завершаем оптимизацию извне оптимизатора /// </summary> public void StopOptimisation() { StopOptimisationTougle = true; LoadingOptimisationTougle = true; Optimiser.Stop(); var processes = System.Diagnostics.Process.GetProcesses().Where(x => x.ProcessName == "metatester64"); foreach (var item in processes) { item.Kill(); } }
private void StartOptimisation(OptimiserInputData optimiserInputData, bool isAppend, string dirPrefix) { if ((optimiserInputData.HistoryBorders.Count == 0 && optimiserInputData.ForwardBorders.Count == 0)) { ThrowException("Fill in date borders"); OnPropertyChanged("ResumeEnablingTogle"); return; } if (Optimiser.TerminalManager.IsActive) { ThrowException("Terminal already running"); return; } if (optimiserInputData.OptimisationMode == ENUM_OptimisationMode.Disabled) { StartTest(optimiserInputData); return; } if (!isAppend) { var dir = workingDirectory.GetOptimisationDirectory(optimiserInputData.Symb, Path.GetFileNameWithoutExtension(optimiserInputData.RelativePathToBot), dirPrefix, Optimiser.Name); List <FileInfo> data = dir.GetFiles().ToList(); data.ForEach(x => x.Delete()); List <DirectoryInfo> dirData = dir.GetDirectories().ToList(); dirData.ForEach(x => x.Delete()); } Optimiser.CloseSettingsWindow(); try { DirectoryInfo cachDir = Optimiser.TerminalManager.TerminalChangeableDirectory .GetDirectory("Tester") .GetDirectory("cache", true); DirectoryInfo cacheCopy = workingDirectory.Tester.GetDirectory("cache", true); cacheCopy.GetFiles().ToList().ForEach(x => x.Delete()); cachDir.GetFiles().ToList() .ForEach(x => x.MoveTo(Path.Combine(cacheCopy.FullName, x.Name))); ClearResults(); Optimiser.ClearOptimiser(); int ind = optimiserInputData.BotParams.FindIndex(x => x.Variable == Fixed_Input_Settings.Params[InputParamName.CloseTerminalFromBot]); if (ind > -1) { var item = optimiserInputData.BotParams[ind]; item.Value = "true"; item.IsOptimize = false; optimiserInputData.BotParams[ind] = item; } var botParams = optimiserInputData.BotParams.ToList(); // Copy expert settings Optimiser.Start(optimiserInputData, Path.Combine(terminalDirectory.Common.FullName, $"{Path.GetFileNameWithoutExtension(optimiserInputData.RelativePathToBot)}_Report.xml"), dirPrefix); SetFileManager fileManager = new SetFileManager( Path.Combine(workingDirectory.GetOptimisationDirectory(optimiserInputData.Symb, Path.GetFileNameWithoutExtension(optimiserInputData.RelativePathToBot), dirPrefix, Optimiser.Name).FullName, "OptimisationSettings.set"), true) { Params = botParams }; fileManager.SaveParams(); Optimiser.TerminalManager.WaitForStop(); } catch (Exception e) { Optimiser.Stop(); throw e; } }