private void TransferDataToEmbedded() { EmbeddedAnalysisData.Clear(); foreach (DataRow from in AnalysisData.Rows) { System.Data.DataRow row = EmbeddedAnalysisData.NewRow(); FillEmbeddedRowFromNormal(row, from); EmbeddedAnalysisData.Rows.Add(row); } RemoveSuperfluousInfoRows(EmbeddedAnalysisData, maxEmbeddedAnalysisRows); }
private void ProcessPendingInfoReponses(object sender, System.Timers.ElapsedEventArgs e) { Dictionary <string, UciInfoResponse> responseByMove = new Dictionary <string, UciInfoResponse>(); // collect per move so we don't do updates for duplicates for (; ;) { var info = PendingInfoResponses.TryDequeue(); if (info == null) { break; } if (info.Fen != Fen) { continue; } foreach (var _ in info.Score) { // replace so we have the latest responseByMove[info.GetMoveLan()] = info; } } if (responseByMove.Count == 0) { return; } if (IsEmbedded) { var newAnalysisData = EmbeddedAnalysisData.Copy(); UpdateEmbeddedAnalysisData(newAnalysisData, responseByMove); ApplyNewEmbeddedAnalysisData(newAnalysisData); } else { var newAnalysisData = AnalysisData.Copy(); UpdateAnalysisData(newAnalysisData, responseByMove); ApplyNewAnalysisData(newAnalysisData); } }